久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

spring2.5 注解

 yfm10 2010-06-09
spring2.5 注解
1.準備工作
(1)導入common-annotations.jar
(2)導入schema文件 文件名為spring-context-2.5.xsd
(3)在xml的beans節(jié)點中配置
<?xml version="1.0" encoding="UTF-8"?>
<beans 
       .......
       xmlns:context="http:/
1.準備工作
(1)導入common-annotations.jar
(2)導入schema文件 文件名為spring-context-2.5.xsd
(3)在xml的beans節(jié)點中配置
<?xml version="1.0" encoding="UTF-8"?>
<beans 
       .......
       xmlns:context="http://www./schema/context "
       xsi:schemaLocation="
           .......
           http://www./schema/context
           http://www./schema/context/spring-context-2.5.xsd "  >
.....
   <!--將針對注解的處理器配置好  -->
  <context:annotation-config />
.....
<beans>
2.在java代碼中使用@Autowired或@Resource注解方式進行裝配 ,這兩個注解的區(qū)別是:
@Autowired默認按類型裝配,@Resource默認按名稱裝配,,當找不到名稱匹配的bean才會按類型裝配,。
默認注解
@Resource  private PersonDao persondao;
<bean id="personDao" class="com.hf.dao.impl.PersonDaoBean"></bean>
首先是判斷persondao是否與xml里的personDao名字相同,相同則注入,,
不同則判斷persondao是否是com.hf.dao.impl.PersonDaoBean類型,,是則注入不是則返回null.
@Resource(name="personDao")  private PersonDao dao;
<bean id="personDao" class="com.hf.dao.impl.PersonDaoBean"></bean>
判斷name名稱是否與bean中id相同不同則返回null
Spring自帶注解方式
@Autowired @Qualifier("personDao") private PersonDao persondao;
默認是按類型注入  加上@Qualifier("personDao")則按名稱注入
3.通過在classpath 自動掃描方式把組件納入spring容器中管理
spring2.5為我們引入了組件自動掃描機制,它可以在類路徑底下尋找標注了@Component @Service @Controller @Repository
注解的類,,并將這些類納入進spring容器中管理,。它們的作用和xml文件中使用bean 節(jié)點配飾組件是一樣的。
(1)使用到了注解的功能(需要注解準備工作的內(nèi)容)
(2)在xml中加入
<context:component-scan base-package="com.hf" />
其中base-package 為需要掃描的包(包含子包)
(3)
@Service用于標注業(yè)務(wù)層組件
@Controller用于標注控制層組件(如struts中的action)
@Repository用于標注數(shù)據(jù)訪問組件 ,,即DAO 組件
@Component泛指組件,,當組件不好歸類的時候,我們可以使用這個注解進行標注,。
(4)
業(yè)務(wù)類
@Service
public class PersonServiceBean implements PersonService {.....}
輸出類
AbstractApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");
PersonService personService= (PersonService)cxt.getBean("personServiceBean");
System.out.println(personService);
cxt.close();
使用注解中bean的id默認名稱為類名稱的首字母小寫名稱
--------------------------------------------------
自己指定名稱
@Service("aa") //默認作用域范圍 是單例范圍
public class PersonServiceBean implements PersonService {.....}
輸出類
AbstractApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml");
PersonService personService= (PersonService)cxt.getBean("aa");
System.out.println(personService);
cxt.close();
--------------------------------------------------
@Service("aa") @Scope("prototype")//修改bean的作用域
public class PersonServiceBean implements PersonService {....}
-----------------------------------------------------------
   @PostConstruct
   public void init(){ 
    System.out.println("初始化");
   }
   @PreDestroy
   public void destory(){  
    System.out.println("釋放資源");
   }
4.AOP注解方式
(1)準備工作:
.導入common-annotations.jar  aspectjrt.jar aspectweaver.jar cglib-nodep-2.13.jar
.導入schema文件 文件名為spring-aop-2.0.xsd
.在xml的beans節(jié)點中配置
<?xml version="1.0" encoding="UTF-8"?>
<beans 
       .......
       xmlns:aop="http://www./schema/aop "
       xsi:schemaLocation="
           .......
           http://www./schema/aop
           http://www./schema/aop/spring-aop-2.5.xsd "  >
.....
    <!-- 配置解釋處理器 為@AspectJ注解提供支持  -->
  <aop:aspectj-autoproxy />
.....
<beans>
(2)
<bean id="myInterceptor" class="com.hf.service.impl.MyInterceptor"></bean>
<bean id="personService" class="com.hf.service.impl.PersonServiceBean" ></bean>
將切面和被攔截的類交給spring管理
(3)切面類
@Aspect //定義切面類
public class MyInterceptor {
   /**
    *  @Pointcut("execution(* com.hf.service..*.*(..))")表達式含義
    * 第一個* 表示返回值類型為任意類型
    * com.hf.service..  兩個點表示包路徑下的子包的類也要攔截
    * com.hf.service..*.* 子包的所有類中的所有方法 第一個*是方法第二個*是類
    * (..)代表方法參數(shù)隨意 可有可無可多可少
    * **/
   @Pointcut("execution (* com.hf.service.impl.PersonServiceBean.*(..))")// 定義切入點
   private void andMethod()//聲明一個切入點
   {}
  
/*   @Before("andMethod()")
   public void doAccessCheck(){
    System.out.println("前置通知");   
   }
   */
  
   @Before("andMethod() && args(name)") //帶參數(shù) 只攔截符合參數(shù)類型的方法
   public void doAccessCheck(String name){
    System.out.println("前置通知"+name);   
   }
  
/*   @AfterReturning("andMethod()")
   public void doFaterReturning(){   
    System.out.println("后置通知");
   }*/
  
   @AfterReturning(pointcut="andMethod()",returning="result")//帶返回值的 無返回值的方法 result為null
   public void doFaterReturning(String result){//攔截方法執(zhí)行后 獲取返回值對象
    System.out.println("后置通知:"+result);
   }
  
  @After("andMethod()")
   public void doAfter(){
    System.out.println("最終通知"); 
   }
  
/*   @AfterThrowing("andMethod()")
   public void doAfterThrowing(){   
    System.out.println("例外通知");
   }*/
  
   @AfterThrowing(pointcut="andMethod()" , throwing="e") //獲取例外并打印
   public void doAfterThrowing(Exception e){  
    System.out.println("例外通知:"+e);
   }
   @Around("andMethod()")//環(huán)繞通知
   public Object doBasecProfiling(ProceedingJoinPoint pjp )throws Throwable{
   //if(){//判斷是否與權(quán)限
    System.out.println("進入通知");
    Object result = pjp.proceed();
    System.out.println("離開 通知");
   //}
    return result;
   }
}
(4)業(yè)務(wù)類 PersonServiceBean
public class PersonServiceBean implements PersonService {
 public void save(String name){
      throw new RuntimeException("純屬例外");
      // System.out.println("我是Save方法"+name);
    }
 public String update() { 
  return "我是update方法";
 }
}
 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多