【问题标题】:Intellij @Autowired. No matching spring beans foundIntellij @Autowired。没有找到匹配的春豆
【发布时间】:2018-03-06 02:30:08
【问题描述】:

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 = 未找到。

@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 = 找到。

AOP 代码

package org.fxb.module.aop;

@Aspect
@Component
public class ModuleContextAOP {

我认为这是一个没有问题的代码。我不明白为什么 IntelliJ 似乎是一个错误。

【问题讨论】:

  • 如果我们只得到您的 java 版本和微小的模糊 sn-ps 屏幕截图,那么任何人都无法帮助您。请重新阅读How to Ask
  • @AndreyTyukin 对不起,我会说一点英语。但是我还应该添加什么?
  • 您应该争取MCVE,这会大大增加获得好答案的机会。正如上面链接的“如何提问”中所述,您还应该避免发布代码图像而不是实际代码,因为没有人想手动重新键入代码片段。
  • @AndreyTyukin 我上传了一张图片来显示 intellij 的错误。
  • 谢谢,最好至少有一些代码 sn-ps。

标签: java spring intellij-idea


【解决方案1】:

我认为它无法自动装配组件,因为您自动装配 ModuleContextAOP 的类 ModuleConfiguration 不是组件。尝试使用组件注释 ModuleConfiguration ,它应该可以工作。通常@Configuration 用于定义bean,但您正在尝试自动装配它们。

【讨论】:

    【解决方案2】:

    https://youtrack.jetbrains.com/issue/IDEA-187757

    includeFilters = @Filter(type = FilterType.ANNOTATION, classes = Component.class)

    includeFilters = @Filter(type = FilterType.ANNOTATION, value = Component.class)

    已解决。

    谢谢...

    【讨论】:

      【解决方案3】:

      您的类ModuleConfiguration 不是 Spring bean 类,因此无法自动装配对它的依赖。您需要将类的 bean 条目放在 XML 文件中(在其中声明其他 spring bean)或使用 @component 注释它。

      @Component 表示带注释的类是“组件”。在使用基于注释的配置和类路径扫描时,此类类被视为自动检测的候选对象。

      或者你可以使用@Configuration将所有spring bean扫描成一个类 @Configuration 是 Spring 3 中引入的基于 Java 的配置机制的核心。它提供了基于 XML 的配置的替代方案。

      所以下面的2个sn-ps是相同的:

      <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 元注释的其他注释之一,例如 @Service

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-13
        • 1970-01-01
        • 2020-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多