Spring的AOP的基於AspectJ註解開發
阿新 • • 發佈:2018-12-09
1 配置檔案的頭
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd" >
</beans>
2 編寫目標類並配置
public class OrderDao {
public void save() {
System.out.println("執行了save方法");
}
public void update() {
System.out.println("執行了update方法");
}
public void find() {
System.out.println("執行了find方法");
}
public void delete() {
System.out.println("執行了delete方法" );
}
}
<bean id="orderDao" class="com.xu.spring.demo1.OrderDao"></bean>
3 編寫切面類,配置
/*
* 註解的切面類
*/
public class MyAspectAnno {
public void before(){
System.out.println("前置增強");
}
}
<bean id="myAspect" class="com.xu.spring.demo1.MyAspectAnno"></bean>
4 使用註解的AOP對目標類進行增強
其實就是在前一個標題裡面寫的切面類上進行配置
/*
* 註解的切面類
*/
@Aspect
public class MyAspectAnno {
@Before(value="execution(* com.xu.spring.demo1.OrderDao.save(..))")
public void before(){
System.out.println("前置增強");
}
}
5 測試類
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringDemo1 {
@Resource(name="orderDao")
private OrderDao orderDao ;
@Test
public void Demo1(){
orderDao.save();
orderDao.find();
orderDao.delete();
orderDao.update();
}
}
6 Spring的註解的AOP的通知型別
-
Spring的註解的AOP的通知型別
-
@Before:前置通知
-
@AfterReturning:後置通知
-
@Around:環繞通知
-
@AfterThrowing:異常丟擲通知
-
@After:最終通知
-
@Pointcut:切入點的註解
-