首页 > 解决方案 > 在@Configuration 类中有@Autowire 或@Inject 可以吗

问题描述

Spring 5, Java 8 我有多个配置文件,其中一个配置文件具有@Autowire 依赖项。它不会抱怨运行时间并且工作正常,但 intellij 警告找不到这些 bean。

想知道这是否可以拥有@Autowire@Inject在配置类中。

为什么我拥有它是 b/c 它是我的 websocket 配置和我的处理程序需要依赖项。

标签: springspring-mvc-test

解决方案


没关系。

@Configuration表示一个类声明@Bean了可能需要依赖项的 s。@Configuration本身带有元注释,并且“因此也可以像任何常规一样@Component利用@Autowired/ ”。@Inject@Component

我建议您将依赖项作为方法参数传递,而不是将它们注入字段。@Bean它使配置类保持清晰,并强调每个方法所需的依赖关系。

我更喜欢

class C {
    @Bean
    public A a(B b) { new A(b); }
}

class C {
    private final B b;        

    @Bean
    public A a() { new A(b); }
}

推荐阅读