在我的 Spring Boot 应用程序中,我有一个
@Autowired ConfigurableEnvironment env;
@RestController 类中的对象。
当我到达正在调用的端点时
env.getPropertySources(); //Just for the sake of testing. not a real use case
env 对象不为 null。
虽然我有一个外部依赖项,但我已添加到 build.gradle 中。 该库有一个 @Configuration 类,该类有一个
@Autowired ConfigurableEnvironment
对象。当库尝试使用该对象时,该对象为空。
如何强制从外部库加载bean到最后。
我尝试在我的项目中创建一个 ApplicationListener,它会销毁该 bean 并重新创建它。此 ApplicationListener 有一个
@Order(Ordered.LOWEST_PRECEDENCE)
,用于强制在创建所有其他 bean 后重新创建此外部 bean。
但这不太有效。
要与
@Autowired
一起使用,类需要用 @Configuration
或 @Component
进行注释。并且其包需要包含在组件扫描中。在你的情况下,很可能不是因为它是一个外部库。
解决方案
为主应用程序类添加注释。像这样:
@ComponentScan("your-library-class-package")