相关疑难解决方法(0)

启用S​​pring AOP或AspectJ

这是从这个问题继续:

@Aspect方面的Spring autowired bean为null

我最初的理解是,当使用Spring AOP时,使用@Aspect注释的类被创建为spring managed beans,因此依赖注入将正常工作.但是,似乎带有@Aspect注释的对象被创建为弹簧容器外的单例,因此我必须像XML一样配置它,以便将其作为spring托管bean启用:

<bean id="aspect" class="com.mysite.aspect" factory-method="aspectOf" />
Run Code Online (Sandbox Code Playgroud)

这已经让我完全糊涂了.我认为以下配置将使用spring AOP:

<context:component-scan base-package="com.mysite.aspectPackage"/>
<aop:aspectj-autoproxy/>
Run Code Online (Sandbox Code Playgroud)

因此,它将使用组件扫描创建方面bean来扫描@Aspect注释,然后autoproxy将创建一个beanPostProcessor,它使用适当的建议代理我的上下文中的所有bean.然后我想要启用aspectJ我需要一个完全不同的XML配置(顺便说一下,我似乎无法在文档中找到一个例子).正是这种配置使用aspectJ来创建可以在我的容器之外的方面,或者通过操作字节码而不是代理来工作.

注意
这不是关于spring AOP和J方面之间差异的问题,这里有很好的阐述:

Spring AOP vs AspectJ

java aop spring spring-aop

10
推荐指数
2
解决办法
2万
查看次数

Spring Boot - 无法使用aspectj编织加载时间来工作

谁能告诉我为什么在使用弹簧靴时不会触发方面?我正在尝试使用 aspectj 设置加载时间编织,以便我可以建议私有方法。

这是准系统项目的链接 - https://github.com/satb/spring_aop_test_project.git

使用“-javaagent:path/to/spring-instrument-4.1.0.RELEASE.jar”(或计算机上其他版本的lib)运行“App”类并运行curl命令

curl -i http://localhost:8080/test-app/motd
Run Code Online (Sandbox Code Playgroud)

MyAspect 类有一个建议,应该在调用 MyService 的私有方法时执行。但在这种情况下,什么也不会发生。

但是,当应用程序启动时,我看到如下消息:

[AppClassLoader@58644d46] warning javax.* types are not being woven because the weaver option '-Xset:weaveJavaxPackages=true' has not been specified.
Run Code Online (Sandbox Code Playgroud)

我尝试按照这里的建议让它工作,但这没有帮助 -将 @Autowired 与 AspectJ 和 Springboot 一起使用

aop spring load-time-weaving spring-boot

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

aop ×2

spring ×2

java ×1

load-time-weaving ×1

spring-aop ×1

spring-boot ×1