您的位置 首页 java

每天分享一点Java知识(spring-aop)

每天分享一点 Java 知识,码字不易,喜欢的可以关注一波,共同学习。20191127

本篇将详细讲解SpringAOP的概念以及如何实现。

1. 何为 aop

AOP: 面向切面编程 ,相对于 OOP 面向对象编程。

Spring AOP存在的目的是为了 解耦 ,AOP可以让一组类共享相同的行为,在OOP中只能通过继承类喝实现接口,来使代码的耦合度增强,且类继承只能为单继承,阻碍更多行为添加到一组类上,AOP弥补了OOP的不足。

2. AspectJ的注解式切面编程

a. 使用注解@Aspect声明是一个切面;

b. 使用注解@After、@Before、@Around等定义建言(advice),可直接将拦截规则(切点)作为参数;

c. 其中@After、@Before、@Around参数的拦截规则为切点(PointCut),为了使切点复用,可使用@PointCut专门定义拦截规则,然后在@After、@Before、@Around的参数中调用;

d. 其中符合条件的每一个被拦截处为连接点(JoinPoint)。

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

4. 代码示例:

a. 添加依赖

i. 添加Spring Aop支持以及AspectJ依赖

每天分享一点Java知识(spring-aop)

spring-aop依赖

<!–AspectJ依赖–>

每天分享一点Java知识(spring-aop)

AspectJ依赖

b. 编写拦截规则的实现

每天分享一点Java知识(spring-aop)

拦截规则注解

解释:注解本身是没有功能的,就和xml一样。注解和xml都是一种 元数据 ,元数据即解释数据的数据,这就是所谓配置。注解的功能来自用这个注解的地方。

c. 编写使用注解的被拦截类

每天分享一点Java知识(spring-aop)

注解拦截类

d. 编写使用方法规则被拦截类

每天分享一点Java知识(spring-aop)

e. 编写切面

每天分享一点Java知识(spring-aop)

切面类

解释:

i. 通过@Aspect注解声明一个切面;

ii. 通过@ Component 让此切面成为Spring容器管理的Bean;

iii. 通过@PointCut注解声明切入点;

iv. 通过@After注解声明一个建言,并使用@PointCut定义的切点;

v. 通过反射可以获得注解上的属性,然后做日志记录相关的操作,下面的相同;

vi. 通过@Before注解声明一个建言,此建言直接使用拦截规则作为参数。

f. 配置类

每天分享一点Java知识(spring-aop)

注解配置

解释:使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持。

g. 运行

每天分享一点Java知识(spring-aop)

运行测试

h. 结果

每天分享一点Java知识(spring-aop)

运行结果

5. 至此,便完成了Spring Aop的实现,相信大家对aop的理解也会更深一步。


想获取完整面试题及答案的同学请点赞、关注并转发。私信楼主:“Java面试题”获取完整资料,更有超全spring、 jvm 、linux、 docker 等电子书相送。更有整理的200多页的面试重点知识点,非常全面,需要的私信。

文章来源:智云一二三科技

文章标题:每天分享一点Java知识(spring-aop)

文章地址:https://www.zhihuclub.com/192838.shtml

关于作者: 智云科技

热门文章

网站地图