10 Spring框架的AOP技術(註解方式)
阿新 • • 發佈:2018-12-20
-
引入Spring框架開發的基本開發包,spring的傳統AOP的開發的包與aspectJ的開發包
-
建立spring配置檔案 applicationContext.xml
<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>
-
建立包結構
dao
package dao;
public class CustomerDaoImpl implements CustomerDao{
@Override
public void save() {
System.out.println("dao save");
}
}
切面類
package demo; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect//定義切面類的註解 public class AspectAnno { //定義前置通知(value填寫切入點表示式) @Before(value="execution(* *..*DaoImpl.save(..))") public void demo1() { System.out.println("before anno"); } }
-
將目標類與切面類配置到applicationContex.xml中,並設定自動代理
<?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"> <!-- 定義自動代理 --> <aop:aspectj-autoproxy/> <!-- spring 代理bean --> <bean id="ustomerDao" class="dao.CustomerDaoImpl"/> <!-- 定義切面類 --> <bean id="aspectAnno" class="demo.AspectAnno"/> </beans>
-
編寫測試類
package demo;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import dao.CustomerDao;
//定義@RunWith繼承junit測試環境,@ContextConfiguration初始化xml
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo {
//用@Resource獲得bean
@Resource(name="ustomerDao")
private CustomerDao cdao;
//測試方法
@Test
public void demo1() {
cdao.save();
}
}
測試結果: