我正在使用spring mvc。在每个控制器上,我想检查作为参数传递的userId是否有效。为此,我利用了spring-aop,在方法调用之前,我读取了作为参数传递的userId并对我的数据库进行了验证。问题是我的数据库(MongoDB存储库)在方面是自动装配的。但是当试图使用这个autowire存储库时,我得到一个NullPointerException。 环顾四周后,我尝试将工厂方法=" aspectOf"在方面的bean定义中,我得到了以下错误 - "找不到匹配的工厂方法:工厂方法' aspectOf()'。检查具有指定名称的方法是否存在,并且它是静态的。"
我的方面配置
<bean id="controllerAspect" class="com.xyz.aspect.ControllerLoggingAspect"/>
<aop:aspectj-autoproxy>
<aop:include name="controllerAspect" />
</aop:aspectj-autoproxy>
Aspectj maven插件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7</version>
<configuration>
<outxml>true</outxml>
<Xlint>warning</Xlint>
<verbose>true</verbose>
<source>1.6</source>
<target>1.6</target>
<complianceLevel>1.6</complianceLevel>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<showWeaveInfo>true</showWeaveInfo>
</configuration>
</execution>
</executions>
</plugin>
方面
@Configurable
@Aspect
public class ControllerLoggingAspect {
@Autowired
private UsersRepository userRepository;
请帮帮我,我需要自动装配mongodb存储库。如果不是自动装配,我还能做什么? 我是否正确甚至在方面自动装配我的mongo存储库? 我已经看到以下答案无济于事: https://stackoverflow.com/questions/25675151/springaspectj-ltw-autowired-causes-npe Injected bean reset to NULL in the Aspect