Aop_AspectJ实现
Aop(面向切面编程)
aop中的横切关注点也就是说的通用模块,可以被模块化为特殊的类,这些类被称为切面,可以通过通过声明的方式定义这个功能要以何种方式在何处应用。
AOP术语:
通知(Advice):增强的功能,切面要完成的工作。
通知类型:
前置
后置
返回
异常
环绕
连接点(Join point):是在程序执行过程中能够应用通知的所有点,是一个运行时用到的概念,连接点可以是调用方法时、抛出异常时等。
切点(Poincut):定义了通知被应用的具体位置,“何处”
切面(Aspect):通知和切点的集合,通知和切点共同定义了切面的全部内容——它是什么,何时在何处完成其功能。
引入(Introduction)
织入(Weaving)
spring提供了4种类型的aop支持 spring对aop的支持局限于方法拦截
基于代理的经典spring aop
纯pojo切面
@Aspectj注解驱动的切面
注入式Aspectj切面
Spring中AspectJ使用
1 perform()作为切点
package com.springa.aop.concert; //切点 public interface Performance {public void perform(); }
2 定义切面
package com.springa.aop.concert; import org.aspectj.lang.annotation.*; @Aspect public class Audience {@Pointcut("execution(public * com.springa.aop.concert.Performance.perform(..))")public void performance(){}@Before("performance()")public void silenceCellPhones(){System.out.println("Silencing cell phones");}@Before("performance()")public void takeSeats(){System.out.println("Taking seata");}@AfterReturning("performance()")public void applause(){System.out.println("CALL CALL");}@AfterThrowing("execution(public * com.springa.aop.concert.Performance.perform(..))")public void demandRefund(){System.out.println("Demanding a refund");} }
@Aspect 表明Audience不仅仅是一个Pojo,还是一个切面
如果是使用普通的javaconfig的话,需要使用@EnableAspectJAutoProxy启用自动代理。xml文件通过
<aop:aspectj-autoproxy />开启。
package com.springa.aop.concert;import com.springa.aop.aspect.Audience; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy;@Configuration @EnableAspectJAutoProxy @ComponentScan public class ConcertConfig {@Beanpublic Audience audience(){return new Audience();} }
上面是使用spring的代码,使用springboot参考下面:
在sprigboot中,在pom.xml中导入了依赖,默认是开启了aop,不需要@EnableAspectJAutoProxy注解
步骤1 不变,定义切面步骤中使用@Compoent注解,不使用配置类。
目录结构和上面的有所不同。完成了上面的可以进行测试了。
Git地址:https://github.com/hutaoying/springboot1/tree/master/aop springboot代码实现
转载于:https://www.cnblogs.com/joan-HTY/p/10102817.html
Aop_AspectJ实现相关推荐
- 二十9天 月出冲击黑鸟 —Spring的AOP_AspectJ @annotation
6月14日,阴转雨. "四面垂杨十里荷,向云何处最花多, 画楼南畔夕阳和.天气乍凉人寂寞, 光阴须得酒消磨,且来花里听笙歌." 面向切面的框架AspectJ邂逅Spring,不仅造 ...
最新文章
- Spark RDD创建操作
- 程序员获取编程灵感的10 种方式
- 【报告分享】2021年小红书美妆护肤洞察报告.pdf(附下载链接)
- socketserver模块使用方法
- php日程 增删改查,使用Fullcalendar管理日程事件(增删改查拖放)
- MySQL学习笔记:一道group by+group_concat解决的小问题
- ERStudio逆向工程生成ER模型
- 新萝卜家园 GhostXP SP3 电脑城装机版 V2011.07
- Ubuntu Linux红色警戒Read Alert官方开源版OpenRA安装笔记
- UC浏览器电脑版来了:用了有快感?
- SpringMvc国际化i18n
- python pdf与图片互转
- 修改服务器磁盘槽位编号,centos7 盘符变动 绑定槽位
- Android中收货地址管理Demo
- CTF 每日一题 Day44 rot
- 反反爬虫 大众点评-图片文字破解 2020年6月6日更新
- JQuery-样式篇
- 计算安全和无条件安全
- 基于SpringBoot框架的管理系统【完整项目源码】
- 测试u盘内存的软件,memtest86+-2.11内存测试、测速软件
热门文章
- ai二维码插件_超实用的AI脚本插件合集2.0免费分享,让你的设计快人一步
- 杭电计算机组成原理教材答案,杭电计算机组成原理包建课后作业答案详解.doc...
- linux进入文件夹后退,实验二Linux系统简单文件操作命令
- datatable java排序,JSF数据表(h:dataTable)DataModel排序数据
- 进入到一个新的产品,如何开展测试工作
- 编程之美4:求数组中的最大值和最小值
- 剑指offer面试题[17]-合并两个排序的链表
- 集成unittest与html测试报告
- mysql 无法创建用户_无法在MySQL 5.6中创建用户
- APP UI自动化测试:框架选择、环境搭建、脚本编写……全总结