我正在尝试找出一种将Bean注入到Aspect中的方法。
我的意思是:
如果我理解正确的话,它抱怨aspectjrt.jar不在类路径中,尽管我已经检查过并将其放在依赖项中(使用Maven构建)。 它在“provided”范围内,尝试切换到“compile”,但没有改变任何内容。
有人能帮我解决这个问题吗?
编辑:解决了最初的问题,现在出现了NullPointerException
通过按照simas_ch的建议将aspectjrt.jar添加到Arquillian部署中解决了最初的问题。
但是,在执行时,我收到一个NullPointerException。
我的意思是:
public class Greeter {
public String greet(String name) {....}
}
...
public aspect GreeterAspect {
@Inject
private Greeter greeter
...
}
在使用Arquillian + Wildfly 8.2.1(管理和远程)作为JUnit测试执行时,我会得到以下日志行:
WELD-000119: Not generating any bean definitions from x.y.z.Greeter because of underlying class loading error: Type org.aspectj.runtime.internal.AroundClosure from [Module "deployment.test.war:main" from Service Module Loader] not found.
WELD-000119: Not generating any bean definitions from x.y.z.GreeterAspect because of underlying class loading error: Type org.aspectj.lang.NoAspectBoundException from [Module "deployment.test.war:main" from Service Module Loader] not found.
在我执行操作后不久,出现了错误
WELD-001474: Class x.y.z.Greeter is on the classpath, but was ignored because a class it references was not found: org.aspectj.runtime.internal.AroundClosure from [Module "deployment.test.war:main" from Service Module Loader].
如果我理解正确的话,它抱怨aspectjrt.jar不在类路径中,尽管我已经检查过并将其放在依赖项中(使用Maven构建)。 它在“provided”范围内,尝试切换到“compile”,但没有改变任何内容。
有人能帮我解决这个问题吗?
编辑:解决了最初的问题,现在出现了NullPointerException
通过按照simas_ch的建议将aspectjrt.jar添加到Arquillian部署中解决了最初的问题。
但是,在执行时,我收到一个NullPointerException。
public class Greeter {
public String greet(String name) {....}
}
...
public aspect GreeterAspect {
@Inject
private Greeter greeter;
private pointcut pc() : execution(* x.y.z.SomeClass.someMethod(..));
String around() : pc() {
log.debug("Aspect is about to say something...");
String result = greeter.greet("Stefano");
log.debug("Aspect said: " + result);
return proceed();
}
}
我能看到第一行日志(Aspect is about to say something...
),然后我收到了NullPointerException
,很明显Greeter
bean没有被注入。
我做错了什么?或者说有可能将bean注入到切面中吗?
aspectjrt.jar
库到部署中。毕竟,Arquillian处理微型部署。现在,我遇到了第二个问题,当调用注入的bean时出现了NullPointerException
。稍微检查了一下,但它没有被注入,是NULL
。我将更新问题。 - Stefano Cazzola@Autowired
,我使用了aspectOf
方法来构建这些方面,从而利用了Spring的依赖注入。 - Stefano Cazzola