您的位置:首页 > 文旅 > 旅游 > 奋进新征程_进入公众号平台_seo排名怎么优化软件_互动营销的概念

奋进新征程_进入公众号平台_seo排名怎么优化软件_互动营销的概念

2025/3/1 12:38:38 来源:https://blog.csdn.net/2302_79981885/article/details/145912596  浏览:    关键词:奋进新征程_进入公众号平台_seo排名怎么优化软件_互动营销的概念
奋进新征程_进入公众号平台_seo排名怎么优化软件_互动营销的概念

前言

入门

在这里插入图片描述
ioc就是对象交给spring管理

aop就是前面的统一功能,就是对一类问题的统一处理
aop就是面向切面编程

我们主要来学习自定义aop

比如我们来打印每个接口的时间
在这里插入图片描述
比如这个就可以计算出一个接口的时间
而我们的aop就是计算出所有的接口的时间

在这里插入图片描述
先引入依赖

在这里插入图片描述
在这里插入图片描述
接下来就是告诉这个切面在哪些地方生效
就是告诉作用域

需要用到Around注解

在这里插入图片描述
这样就对所有的controller都生效了

在这里插入图片描述
这样就知道是谁了

在这里插入图片描述
在这里插入图片描述
这样就实现了aop了

概念

在这里插入图片描述
@Around(“execution(* com.ck.springbook.controller….(…))”)
就是切点表达式

连接点就是具体作用的方法

具体要做的事情就是通知

切面就是前面三个加起来

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
记得添加注解Aspect
当前有两个切面

多个切面的时候
在这里插入图片描述
先执行before,在执行after
目标方法在中间执行
在这里插入图片描述

在这里插入图片描述
这样我们就知道了执行顺序了

这个是没有发生异常的时候

在这里插入图片描述
我们发现了Around可以前处理,后处理,可以异常后处理,已经包含了前面的各个
我们如何把切点定义出来呢
避免改一个,而改动很多个

在这里插入图片描述
这样就可以了

在这里插入图片描述
发现还是可以正常运行的

在这里插入图片描述
其他类要调用别人的切点表达式,那么就要把路径写清楚了

在这里插入图片描述
但是如果pt为私有的话,就不能在其他类使用了,这个记录时间的就不能执行了

切面优先级

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在我们给它们修改顺序

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就成功改了顺序了

切点表达式

在这里插入图片描述

execution

在这里插入图片描述
第二个星是类名,第三个星是方法名

(…)是参数,这个表示0到n个参数
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
t1方法本身最好设置为public

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

annotation

我们先来模拟实现Aspect注解

在这里插入图片描述
TYPE表示这个注解只能加在类上

Retention表示注解的生命周期

在这里插入图片描述
大括号里面可以写多个

在这里插入图片描述
这样就可以使用了
在这里插入图片描述

现在只要我们加个我们新创建的注解,就要使用这个记录时间的切面

这下就要使用annotation注解了

在这里插入图片描述

这样写的意思就是,只要我们方法加了这个注解,就会执行这个切面

在这里插入图片描述

但是我们在u2方法上面加了这个自定注解,还是没有记录时间呢

在这里插入图片描述

那是因为没有交给spring管理

在这里插入图片描述
这样就可以了

在这里插入图片描述
记下这个的包名

在这里插入图片描述
这样写的意思就是只要写了requestMaping注解的,都会执行这个切面

使用的代理模式

在这里插入图片描述
在这里插入图片描述

静态代理

代码没有要求
下面这个是房东

在这里插入图片描述

在这里插入图片描述
现在实现代理,中介在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个就是静态代理
谁代理的,运行前,在class中就确定了

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是这里一改全改,挺麻烦的

JDK动态代理

就是代理对象在运行时才创建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个就是定义在目标方法前和后分别执行什么
就是说代理对象要做什么事情,除了完成目标方法以外(invoke)
还有前后要做什么
method就是目标方法
invoke就是去调用
target就是哪个目标方法

在这里插入图片描述
proxy就是代理对象

CGLIB动态代理

JDK代理只能代理接口,或者实现了接口的类
不能代理没有实现接口的类
比如controller
CGLIB既可以代理接口,也可以是类

在这里插入图片描述
先添加依赖

在这里插入图片描述
我们用哪个,后面就要接着用这个包,不要换了,不然就出错了
比如你用spring的,后面也要用spring的

在这里插入图片描述
这样就写好了CGLIB的代理了

在这里插入图片描述
在这里插入图片描述
这样就成功了

如果使用CGLIB的包的话,需要添加vm option

在这里插入图片描述
在这里插入图片描述
添加这个就可以了
在这里插入图片描述
aop就是基于动态代理实现的
具体是哪种代理,要看情况了

实现了接口的就是有implement,controller就是没有实现接口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看的出来没有实现接口的就是CGlib,而且在false下

测试这个类的时候记得加上我们自定义的aop注解,不然跟aop都没有关系了,切面的Around还要给到我们自定义的注解,还要加上注解,给spring管理的
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

这样就可以了

这就表示了是jdk代理了
设置为true
结论都是CGLIb代理了

如果不配置,那么就都是CGlib,默认是true的
但是jdk默认是false的

我们的spring默认是true的

我们现在设置为fasle
在这里插入图片描述
把接口改为类,强转为类
就会报错
在这里插入图片描述
这个说明了jdk不能代理类

只有在false下才存在jdk代理
而且只有接口才有jdk,jdk不能代理类,强转为lei会出错
在这里插入图片描述
而CGLIb类和接口都可以代理

false下
在这里插入图片描述
spring2.0默认是true,

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以前的springframework是默认false,springboot2.0开始默认是true

总结

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com