springboot aop注解,springmvc自定义注解实现aop
写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用
切面:Aspect
切面=切入点通知。在老的春天版本中通常用可扩展标记语言配置,现在通常是一个类带上@Aspect注解。切面负责将横切逻辑(通知)编织到指定的连接点中。
目标对象:Target
将要被增强的对象。
连接点:JoinPoint
可以被拦截到的程序执行点,在春天中就是类中的方法。
切入点:PointCut
需要执行拦截的方法,也就是具体实施了横切逻辑的方法。切入点的规则在春天中通过实现切入点表达式语言来描述。
切入点与连接点的区别:连接点是所有可以被切的点;切入点是真正要切的点。
通知:Advice
针对切入点的横切逻辑,包含"周围"、"之前"和"之后"等不同类型的通知。
通知的作用点如其命名:
之前:在切入点之前执行
之后:在切入点之后执行
周围:在切入点拦截方法,自定义前后,更灵活
还有一些异常处理的通知,这里不一一举例
织入:Weaving
将切面和目标对象连接起来,创建代理对象的过程春天。中用的是动态代理。假如目标对象有接口,使用爪哇岛开发工具包动态代理;否则使用字节码生成动态代理。
说了这么多概念,看看代码实现可能会使读者理解的更深刻一些,这里简单写一个通过注解增强方法的面向切面编程演示版。
首先是切面类:
包com。举例。演示。AOP
导入org。AspectJ。郎。连接点;
导入org。AspectJ。郎。proceedingjoinpoint
导入org。AspectJ。郎。注释。*;
导入org。spring框架。刻板印象。组件;
/**
* @作者博达大桥
* @日期2020年6月20日
* @描述切面类=切入点通知
*/
@Aspect
@组件
公共类对数方面
//这个方法定义了切入点
@ Pointcut( @ annotation(com。举例。演示。AOP。没有。mylog))
公共空的切入点(){}
//这个方法定义了具体的通知
@After(pointCut())
public void recordRequestParam(连接点连接点){
for(对象s:连接点。get args()){
//打印所有参数,实际中就是记录日志了
系统。出去。println( after advice: s );
}
}
//这个方法定义了具体的通知
@Before(pointCut())
公共void startRecord(连接点连接点){
for(对象s:连接点。get args()){
//打印所有参数
系统。出去。println(在建议之前: s ).
}
}
//这个方法定义了具体的通知
@Around(pointCut())
公共对象环绕记录(过程连接点pjp)抛出可投掷的
for (Object s : pjp.getArgs()) {
//打印所有参数
系统。出去。println( around advice:s);
}
返回pjp。proceed();
}
}注解:
包com。举例。演示。AOP。安诺;
导入Java。郎。注释。*;
/**
* @作者博达大桥
* @日期2020年6月20日
* @描述
*/
@已记录
@保留(保留政策.运行时间)
@Target({ElementType .方法,元素类型.类型})
public @interface MyLog {
}目标类:
包com。举例。演示。AOP。目标;
导入com。举例。演示。AOP。没有。我的日志;
导入org。spring框架。网络。绑定。注释。请求映射;
导入org。spring框架。网络。绑定。注释。请求参数;
导入org。spring框架。网络。绑定。注释。休息控制器;
/**
* @作者博达大桥
* @日期2020年6月20日
* @描述
*/
@RestController
公共类模拟控制器{
@RequestMapping(/hello )
@MyLog
公共字符串你好AOP(@ request param String key){
System.out.println(做点什么.);
返回《hello world》;
}
}最后是测试类:
包com。举例。演示。AOP。目标;
导入org。朱尼特。木星。API。测试;
导入org。spring框架。豆子。工厂。注释。自动连线;
导入org。spring框架。靴子。测试。语境。弹簧靴测试;
/**
* @作者博达大桥
* @日期2020年6月20日
* @描述
*/
@SpringBootTest
类模拟控制器测试{
@自动连线
模拟控制器;
@测试
void helloAop() {
模拟控制器。hello AOP( AOP );
}
}控制台结果:
推荐教程:以上《Java教程》是Spring AOP注释的详细内容,更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。