博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring实战(十二) Spring中注入AspectJ切面
阅读量:5210 次
发布时间:2019-06-14

本文共 866 字,大约阅读时间需要 2 分钟。

  1、Spring AOP与AspectJ

  Spring AOP与AspectJ相比,是一个功能比较弱的AOP解决方案。

  AspectJ提供了许多它不能支持的类型切点,如在创建对象时应用通知,构造器切点很方便。

  但是,不像某些其它面向对象语言中的构造器,Java构造器不同于其他的正常方法,这使得Spring基于代理的AOP无法把通知应用于对象的创建过程。

 

  2、通过Spring为AspectJ的切面注入依赖 

  对多数功能来讲,AspectJ与Spring是相互独立的。

  但是,精心设计切有意义的切面可能依赖其他类来完成工作。如在执行通知时,切面依赖与一个或者多个类。这时,我们可以借助Spring的依赖注入把bean装配进AspectJ切面中。

 

  通常情况下,Spring bean由Spring容器初始化,但是AspectJ切面是由AspectJ在运行时创建的,等到Spring有机会为切面A注入它的依赖B时,A已经被实例化了。(这里A是用AspectJ实现的一个切面,使用扩展的java语言)

  因为Spring不负责创建A,那就不能在Spring中简单地把A声明为一个bean。相反,我们需要一种方式为Spring获得已经由AspectJ创建的A的实例的句柄,从而注入B。

  考虑到这些,所有的AspectJ切面都提供了一个静态的aspectof()方法,这个方法返回切面的一个单例。

  所以为了获得切面的实例,我们必须使用factory-method来调用aspectof()方法,而不是调用A的构造器方法。(A中的setter方法)

property name="B" ref="B" />

  简而言之,Spring不能简单使用<bean>创建一个切面A的实例,而是通过aspectof()工厂方法获得AspectJ创建的切面的引用。

转载于:https://www.cnblogs.com/bigbigbigo/p/8375721.html

你可能感兴趣的文章
监控工具之---Prometheus 安装详解(三)
查看>>
Azure Iaas基础之---创建虚拟机
查看>>
不错的MVC文章
查看>>
网络管理相关函数
查看>>
IOS Google语音识别更新啦!!!
查看>>
20190422 T-SQL 触发器
查看>>
[置顶] Linux终端中使用上一命令减少键盘输入
查看>>
poj1422_有向图最小路径覆盖数
查看>>
BootScrap
查看>>
[大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化
查看>>
HTML&CSS常见问题整理(五)
查看>>
Intellij idea
查看>>
WEB_点击一百万次
查看>>
word20161228
查看>>
CodeForces - 878A Short Program(位运算)
查看>>
Mysql聚簇索引和非聚簇索引
查看>>
Hive入门之UDFS函数
查看>>
python文件操作笔记
查看>>
泛型委托
查看>>
笔试题拾遗
查看>>