Spring框架的AOP技术对DAO层的功能进行增强
注解方式
-
环境搭建
- 引入Spring框架的基本的开发包
- 引入Spring框架的AOP的开发包
- spring的传统AOP的开发的包
- spring-aop-4.2.4.RELEASE.jar
- com.springsource.org.aopalliance-1.0.0.jar
- aspectJ的开发包
- com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
-
spring-aspects-4.2.4.RELEASE.jar
Snip20171202_32.png
- spring的传统AOP的开发的包
-
创建Spring的配置文件,引入具体的AOP的schema约束
<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>
目录结构
image.png
将目标类配置到Spring中
<!-- 配置目标类 -->
<bean id="customerDao" class="com.itheima.demo1.CustomerDaoImpl"> </bean>
在配置文件开启自动代理 并定义切面类
<!-- 开启自动助理 -->
<aop:aspectj-autoproxy/>
<!-- 定义切面类 -->
<bean id="myAspect" class="com.coderhong.aspect.MyAspect"></bean>
定义切面类
image.png
其它通知类型
通知类型
* @Before -- 前置通知
* @AfterReturing -- 后置通知
* @Around -- 环绕通知(目标对象方法默认不执行的,需要手动执行)
* @After -- 最终通知
* @AfterThrowing -- 异常抛出通知
在测试类中测试
import com.itheima.demo1.CustomerDao;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Test1 {
@Resource(name="customerDao")
public CustomerDao customerDao;
@Test
public void run1() {
customerDao.save();
}
}
网友评论