Spring AOP中Introduction的使用
Introduction是啥?在Spring中如果有一个已经存在的service,我们想对其进行增强,但是又不想改变其代码,这个时候就可以使用Introduction来处理。具体怎么实现,看下面的详细例子。
引入jar包
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.4.RELEASE</version></dependency><!--spring aop依赖AspectJ--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.2</version></dependency></dependencies>
新建配置类
@Configuration
@ComponentScan("com.xqc")
@EnableAspectJAutoProxy
public class IntroductionConfig {}
新建接口OrderInterface并添加say方法
public interface OrderInterface {void say();
}
实现类
@Service
public class OrderInterfaceImpl implements OrderInterface{@Overridepublic void say() {System.out.println("say...");}
}
新建OrderServiceImpl类,
@Service
public class OrderServiceImpl {}
可以看出该类中没有任何方法,但是我们又想使用say方法。需要添加切面类,然后使用@DeclareParents注解
@Aspect
@Component
public class IntroductionAspect {@DeclareParents(value = "com.xqc.introduction.OrderServiceImpl",defaultImpl = OrderInterfaceImpl.class)private OrderInterface orderInterface;}
value:写需要增强的类,支持表达式 defaultImpl:具体实现增强方法的的类
结果输出
public class TestIntroduction {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(IntroductionConfig.class);OrderInterface orderInterface = (OrderInterface)context.getBean(OrderServiceImpl.class);System.out.println(orderInterface);orderInterface.say();}
}
成功调用OrderInterfaceImpl的say方法
工程结构
Spring AOP中Introduction的使用相关推荐
- Spring AOP中定义切点PointCut详解
1.AOP是什么? 软件工程有一个基本原则叫做"关注点分离"(Concern Separation),通俗的理解就是不同的问题交给不同的部分去解决,每部分专注于解决自己的问题.这年 ...
- Spring AOP中是如何注册Advisor的?
前置博文: Spring AOP中如何为Bean创建代理? Spring AOP中是如何注册Advisor的? Spring AOP如何为目标方法创建拦截器链? Spring AOP拦截器调用的实现 ...
- Spring AOP中定义切点(PointCut)和通知(Advice)
本文讨论一下Spring AOP编程中的两个关键问题,定义切点和定义通知,理解这两个问题能应付大部分AOP场景. 如果你还不熟悉AOP,请先看AOP基本原理,本文的例子也沿用了AOP基本原理中的例子. ...
- 正确理解Spring AOP中的Around advice
Spring AOP中,有Before advice和After advice,这两个advice从字面上就可以很容易理解,但是Around advice就有点麻烦了. 乍一看好像是Before ad ...
- Spring : Spring AOP 中的增强(Advice)或者通知
1.美图 2.概述 概念参考:Spring :Spring AOP 中的一些术语 很多人将增强理解为通知,但是理解为增强会更加准确,因为它表示在连接点上执行的行为,这个行为是目标类类所没有的,是为目标 ...
- Spring :Spring AOP 中的一些术语
1.美图 2.概述 2.1 连接点(Jointpoint) 连接点(Jointpoint):表示需要在程序中插入横切关注点的扩展点,连接点可能是类初始化.方法执行.方法调用.字段调用或处理异常等等,S ...
- Spring Aop中解析spel表达式,实现更灵活的功能
前言 在Spring Aop中,我们可以拿到拦截方法的参数,如果能结合spel表达式,就能实现更加灵活的功能.典型的实现有Spring的缓存注解: @Cacheable(value = "u ...
- Spring AOP 中 advice 的四种类型 before after throwing advice around
Spring AOP(Aspect-oriented programming) 是用于切面编程,简单的来说:AOP相当于一个拦截器,去拦截一些处理,例如:当一个方法执行的时候,Spring 能够拦截 ...
- java @around_正确理解Spring AOP中的Around advice
Spring AOP中,有Before advice和After advice,这两个advice从字面上就可以很容易理解,但是Around advice就有点麻烦了. 乍一看好像是Before ad ...
- Spring AOP 中的切点是什么?如何定义切点?
Spring AOP 中的切点是什么?如何定义切点? 什么是切点? 在 Spring AOP 中,切点(Pointcut)是指一组连接点(Join Point)的集合.连接点是程序执行过程中的某个特定 ...
最新文章
- databtables 设置(显示)行号
- chkconfig命令会立即生效吗_UG绘制波纹管,整体变形命令你会用吗?
- Ajax 文件上传之PHP心得
- Maven学习总结(48)——利用wagon-maven-plugin插件自动化部署Jar包/war包到Linux远程服务器
- ASP.NET性能优化之分布式Session
- 移动商城第十四篇【收货地址查询、添加、更新】
- poj2513 Colored Sticks【欧拉迹+并查集+字典树】
- layer子窗口与父窗口传值
- jsp购物车(session版)
- matlab几何形状面积计算,小学数学几何图形计算公式总结
- linux-快速返回上次所在目录
- 计算机电子科技生产质量标准,SJT9527-1993微型数字电子计算机质量分等标准.pdf...
- html查看今天星期几,jquery怎么获取星期几
- 本科生晋升GM记录 Kaggle比赛进阶技巧分享
- 阻容感基础05:电容器原理(1)-电容器模型
- 能轻松部署的企业即时通讯软件
- 超市进销存管理系统软件(JFrame简版)
- 微信小程序反编译及源码抓取(2021最新)
- 翻译并添加 解析OV13850 datasheet
- 五路DI五路DO,网络继电器,Modbus TCP远程IO模块 WJ95
热门文章
- Elasticsearch 多字段查询 best_fields、most_fields、cross_fields,傻傻分不清楚?
- @Results用法总结
- python调整dicom窗宽窗位_【基础篇】kaggle || RSNA脑溢血金牌案例技术分享!如何使用dicom格式的数据的?...
- 配置 DNS over HTTPS阻止DNS污染
- java对网络图片进行签名
- 微信安装旧版本方法,版本过低,请升级最新版本
- jquery 漂浮广告
- 【Linux】一步一步学Linux系列教程汇总(更新中......)
- Android主题色设为透明
- linux系统输入法进程怎么关闭,快速解决linux下中文输入法问题