JAVA 1.7
春天4.3.7
IntelliJ IDEA 2017.3.4(终极版) Build#IU-173.4548.28,建于2018年1月30日 JRE:1.8.0_152-release-1024-b11 x86_64 JVM:JetBrains s.r.o的OpenJDK 64位服务器VM Mac OS X 10.13.3
为什么没找到?代码没有问题,测试成功。
但我担心错误标记。
useDefaultFilters false = not found。
@Configuration
@EnableAspectJAutoProxy
@ComponentScan(
basePackages = "org.fxb.module",
useDefaultFilters = false,
includeFilters = {
@Filter(type = FilterType.ANNOTATION, classes = { Aspect.class, Mapper.class }),
}
)
public class ModuleConfiguration {
@Autowired
private ModuleContextAOP moduleContextAOP;
useDefaultFilters = true = found。
AOP代码
package org.fxb.module.aop;
@Aspect
@Component
public class ModuleContextAOP {
我认为这是一个没有问题的代码。我不明白为什么IntelliJ似乎是一个错误。
答案 0 :(得分:0)
我认为它无法自动装配组件,因为您自动装配ModuleContextAOP的类ModuleConfiguration不是组件。尝试使用组件注释ModuleConfiguration,它应该工作。通常@Configuration用于定义bean,但是你试图自动装配它们。
答案 1 :(得分:0)
您的类ModuleConfiguration
不是Spring bean类因此无法自动连接它。您需要将类的bean条目放在XML文件中(您声明其他spring bean)或使用@component
注释它。
@Component
表示带注释的类是“组件”。在使用基于注释的配置和类路径扫描时,此类被视为自动检测的候选者。
或者您可以使用@Configuration
将所有spring bean扫描到一个类中
@Configuration
是Spring 3中引入的基于Java的配置机制的核心。它提供了基于XML的配置的替代方案。
所以下面两个片段是相同的:
<beans ...>
<context:component-scan base-package="my.base.package"/>
... other configuration ...
</beans>
和
@Configuration
@ComponentScan(basePackages = "my.base.package")
public class RootConfig {
... other configuration ...
}
在这两种情况下,Spring都会在my.base.package及其下面扫描带有@Component
注释的类或其他一个用@Component
进行元注释的注释,例如{{1} }。
答案 2 :(得分:0)
https://youtrack.jetbrains.com/issue/IDEA-187757
includeFilters = @Filter(type = FilterType.ANNOTATION, classes = Component.class )
到
includeFilters = @Filter(type = FilterType.ANNOTATION, value = Component.class )
解决。
感谢...