1. 程式人生 > >Spring的AOP的基於AspectJ註解開發

Spring的AOP的基於AspectJ註解開發

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:切入點的註解