如果我使用基于AspectJ的Spring AOP,那么我是否可以配置我的方面以使用加载时间编织?或者,当使用基于AspectJ的方法时,Spring AOP是否也支持运行时/编译时编织?
答案 0 :(得分:15)
我认为我们应该注意不要混淆Spring AOP和AspectJ。
答案 1 :(得分:8)
Spring AOP是基于代理的。除非另有配置,否则Spring AOP会执行运行时编织。
编织:将方面与其他应用程序类型或对象链接到 创建一个建议的对象。这可以在编译时完成(使用 例如,AspectJ编译器,加载时间或运行时。 Spring AOP, 与其他纯Java AOP框架一样,在运行时执行编织。
但是,您可以设置Spring来进行加载时编织。查看Spring文档,了解如何执行此操作: http://docs.spring.io/spring/docs/3.2.0.RELEASE/spring-framework-reference/htmlsingle/#aop-aj-ltw
除此之外,您将在Java Config类中使用@EnableLoadTimeWeaving
。
设置非常简单,您的@Aspect
类不会更改。
开发人员只需修改构成应用程序的一个或多个文件 上下文以启用加载时编织而不是依赖 通常负责部署的管理员 配置,如启动脚本