1.3—Spring基础配置—3.AOP-阿里云开发者社区

开发者社区> 开发与运维> 正文

1.3—Spring基础配置—3.AOP

简介: Sping学习笔记—AOP

1.点睛:
AOP:面向切面编程,相对于OOP面向对象编程。
Spring的AOP的存在目的是为了解耦。AOP可以让一组类共享相同的行为。在OOP中只能通过继承类和实现接口,来使代码的耦合度增强,AOP弥补了OOP的不足。
Spring支持AspectJ的注解式切面编程。
(1)使用@AspectJ声明是一个切面。
(2)使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。
(3)其中@After、@Before、@Around参数的拦截规则为切点(PointCut),为了使切点复用,可使用@PointCut专门定义拦截规则,然后在@After、@Before、@Around的参数中调用。
(4)其中符合条件的每一个被拦截处为连接点(JointPoint)

示例将演示基于注解拦截和基于方法规则拦截两种方式,演示一种模拟记录操作的日志系统的实现。其中注解式拦截能够很好地控制要拦截的粒度和获得更丰富的信息,Spring本身在事务处理(@Transcational)和数据缓存(@Cacheable等)上面都使用此种形式的拦截。

2.示例
(1)添加Spring aop支持及AspectJ依赖
screenshot
(2)编写拦截规则的注解
screenshot
注解本身是没有功能的,就和xml一样。注解和xml都是一种元数据,元数据即解释数据的数据,这就是所谓配置。
注解的功能来自用这个注解的地方。
(3)编写使用注解的被拦截类
screenshot
(4)编写使用方法规则被拦截类
screenshot
(5)编写切面
screenshot
通过@Aspect注解声明一个切面
通过@Component让此切面成为Spring容器管理的Bean
通过@PointCut注解声明切点
通过@After注解声明一个建言,并使用@PointCut定义的切点
通过反射可获得注解上的属性,然后做日志记录相关的操作,下面的相同
通过@Before注解声明一个建言,此建言直接使用拦截规则作为参数
(6)配置类
screenshot
使用@EnableAspectJAutoProxy注解开启Spring对AspectJ的支持
(7)运行
screenshot
结果:
screenshot

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章