【从零开始学Spring笔记】AOP的注解开发
2020-04-08 16:11:07来源:博客园 阅读 ()
【从零开始学Spring笔记】AOP的注解开发
大家可以关注作者的账号,关注从零开始学Spring笔记文集。也可以根据目录前往作者的博客园博客进行学习。本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法。欢迎大家一起学习和讨论。
【从零开始学Spring笔记】Spring学习路线
创建项目测试
第一步:创建web项目,引入jar包
引入和AOP的XML开发同样的11个jar包
可以在以前下载解压后的libs文件夹中寻找,同时也上传到百度云了,下载即可。下载链接在本系列文集的第一篇【从零开始学Spring笔记】Spring4学习路线中寻找。
第二步:引入Spring的配置文件
在 src下创建applicationContext.xml
引入aop约束。
约束:spring framework-4.2.4.RELEASE\docs\spring framework-reference\htm|\xsd-configuration.html
观看本系列文集的【从零开始学Spring笔记】Spring配置,配置aop XML文件的提示。
第三步:编写目标类并配置
和之前一样,建立接口和实现类,并配置
<!-- 配置目标对象:被增强的对象 -->
<bean id = "productDao" class="com.tyust.spring.demo2.ProductDaoImpl"></bean>
第四步:编写一个切面类,并交给Spring
package com.tyust.spring.demo1;
public class MyAspect {
public void before() {
System.out.println("前置增强======================================");
}
}
<bean id="myAspect" class="com.tyust.spring.demo1.MyAspect"></bean>
第五步:使用注解的AOP对象目标类进行增强
<!-- 开启注解的AOP开发 -->
<aop:aspectj-autoproxy/>
在切面类上使用增强
@Aspect
public class MyAspect {
@Before(value = "excution(* com.tyust.spring.demo1.OrderDao.save(..))")
public void before() {
System.out.println("前置增强======================================");
}
}
第六步:编写测试类
package com.tyust.spring.demo1;
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;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringDemo1 {
@Resource(name = "orderDao")
private OrderDao orderDao;
@Test
public void demo1() {
orderDao.save();
orderDao.delete();
orderDao.update();
orderDao.find();
}
}
输出结果
注解的AOP的通知的类型
package com.tyust.spring.demo1;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class MyAspect {
@Before(value = "execution(* com.tyust.spring.demo1.OrderDao.save(..))")
public void before() {
System.out.println("前置增强======================================");
}
@AfterReturning(value = "execution(* com.tyust.spring.demo1.OrderDao.delete(..))",returning = "result")
public void afterReturning(Object result) {
System.out.println("后置增强======================================"+ result);
}
@Around(value = "execution(* com.tyust.spring.demo1.OrderDao.update(..))")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("环绕qian增强======================================");
Object obj = joinPoint.proceed();
System.out.println("环绕hou增强======================================");
return obj;
}
@AfterThrowing(value = "execution(* com.tyust.spring.demo1.OrderDao.find(..))",throwing = "ex")
public void afterThrowing(Throwable ex) {
System.out.println("异常抛出增强======================================"+ex.getMessage());
}
@After(value = "execution(* com.tyust.spring.demo1.OrderDao.find(..))")
public void after() {
System.out.println("最终增强======================================");
}
}
输出结果
AOP的注解的切入点的注解
@Pointcut(value = "execution(* com.tyust.spring.demo1.OrderDao.find(..))")
private void pointCut1() {}
@After(value = "MyAspect.pointCut1()")
public void after() {
System.out.println("最终增强======================================");
}
可以让配置变得更方便
总结
@Aspect:定义切面类的注解
通知类型:
- @Before:前置通知
- @AfterReturing:后置通知
- @Around:环绕通知
- @After:最终通知
- @AfterThrowing:异常抛出通知
@Pointcut:定义切入点的注解
原文链接:https://www.cnblogs.com/zllk/p/12663864.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:java的访问权限
- Spring系列.ApplicationContext接口 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 给你一份超详细 Spring Boot 知识清单 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash