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(); } }
測試即可。