1. 程式人生 > >Spring框架的AOP技術(註解方式)

Spring框架的AOP技術(註解方式)

1. 步驟一:建立JavaWEB專案,引入具體的開發的jar包
    * 先引入Spring框架開發的基本開發包
    * 再引入Spring框架的AOP的開發包
        * spring的傳統AOP的開發的包
            * spring-aop-4.2.4.RELEASE.jar
            * com.springsource.org.aopalliance-1.0.0.jar

        * aspectJ的開發包
            * com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
            * spring-aspects-4.2.4.RELEASE.jar

2. 步驟二:建立Spring的配置檔案,引入具體的AOP的schema約束
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    </beans>

3. 步驟三:建立包結構,編寫具體的介面和實現類
    * com.huida.demo1
        * CustomerDao           -- 介面
package com.huid.demo1;

public interface CustomerDao {

    public void save();
    public void update();
}
        * CustomerDaoImpl       -- 實現類
package com.huid.demo1;

public class CustomerDaoImpl implements CustomerDao {

    @Override
    public void save() {
        System.out.println(
"儲存客戶"); } @Override public void update() { System.out.println("修改客戶"); } }

4. 步驟四:將目標類配置到Spring中
    <bean id="customerDao" class="com.huida.demo1.CustomerDaoImpl"/>

5. 步驟五:定義切面類
    * 新增切面和通知的註解
        * @Aspect                   -- 定義切面類的註解

        * 通知型別(註解的引數是切入點的表示式)
            * @Before               -- 前置通知
            * @AfterReturing        -- 後置通知
            * @Around               -- 環繞通知
            * @After                -- 最終通知
            * @AfterThrowing        -- 異常丟擲通知

    * 具體的程式碼如下
        @Aspect
        public class MyAspectAnno {
            @Before(value="execution(public void com.huida.demo1.CustomerDaoImpl.save())")
            public void log(){
                System.out.println("記錄日誌...");
            }
        }

6. 步驟六:在配置檔案中定義切面類
    <bean id="myAspectAnno" class="com.huida.demo1.MyAspectAnno"/>

7. 步驟七:在配置檔案中開啟自動代理
    <aop:aspectj-autoproxy/>

8. 完成測試
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class Demo1 {

        @Resource(name="customerDao")
        private CustomerDao customerDao;

        @Test
        public void run1(){
            customerDao.save();
            customerDao.update();
        }
    }