3-1 Spring 基於AspectJ的註解方式進行AOP開發

Spring使用AspectJ進行AOP的開發:註解方式


大致步驟,

1,導包;

2,引入Spring的約束;

3,創建類和增強類;

4,開啓Aspect代理;

5,配置文件創建對象;

6,測試;


  • 創建一個Web項目, 引入相關的jar包。所要導入的jar包如下: 
    這裏寫圖片描述
  • 引入Spring的配置文件。主要引入AOP的約束:

    <?xml version="1.0" encoding="UTF-8"?>
    <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>

  • 編寫目標類。 
    在Web項目的src目錄下創建一個cn.itcast.aop包,並在該包下編寫一個Book類:

    public class Book {
    
        public void add() {
            System.out.println("book add.................");
        }
    
    }

  • 編寫切面類。 
    再在cn.itcast.aop包下編寫一個MyBook增強類:

    public class MyBook {
    
        public void before1() {
            System.out.println("before........");
        }
    
    }

  • 在增強的類上面使用@Aspect註解

    @Aspect
    public class MyBook {
    
        public void before1() {
            System.out.println("before........");
        }
    
    }

  • 在增強類的方法裏面,使用註解配置通知類型:

    @Aspect
    public class MyBook {
    
        // 前置通知
        // *:方法的訪問修飾符,也可寫爲execution(public void cn.itcast.aop.Book.*(..)),但一般都不會用
        @Before("execution(* cn.itcast.aop.Book.*(..))")
        public void before1() {
            System.out.println("before........");
        }
    
    }

    AspectJ的AOP的註解:

    • @Aspect:定義切面類的註解
    • @Before:前置通知,相當於BeforeAdvice
    • @AfterReturning:後置通知,相當於AfterReturningAdvice
    • @Around:環繞通知,相當於MethodInterceptor
    • @AfterThrowing:拋出通知,相當於ThrowAdvice
    • @After:最終final通知,不管是否異常,該通知都會執行
    • @Pointcut:定義切入點的註解
  • 開啓AspectJ的註解

    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

  • 創建Book類和MyBook類的兩個對象(使用配置文件)

    <bean id="book" class="cn.itcast.aop.Book"></bean>
    <bean id="myBook" class="cn.itcast.aop.MyBook"></bean>

  • 最後在cn.itcast.aop包下編寫一個TestDemo單元測試類

    public class TestDemo {
    
        @Test
        public void testBook() {
            ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
            Book book = (Book) context.getBean("book");
            book.add();
        }
    }

    測試即可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章