@stepscope不能与springboot中的@constructorbinding一起使用

bfhwhh0e  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(374)

我试着做一个 @ConfigurationProperties 没有设置器的豆子所以我用 @ConstructorBinding . 我们叫这个班吧 PropertiesFromYml.java .
这很好,bean是由 yml 文件。
配置类具有必要的设置:

@Configuration
@ConfigurationPropertiesScan("com.my.package") // this is where PropertiesFromYml.java is stored
public class MyConfig

我想加上 @StepScope 为了这个 PropertiesFromYml.java 因为我的springboot应用程序将运行计划的批处理作业,所以我不想初始化这个类,但只在作业需要时才初始化。
但是:不幸的是,bean总是在启动期间创建的。我想这是因为 @ConfigurationPropertiesScan myconfig.java类上的注解。但是,我如何知道只有在必要时才创建bean,比如使用@stepscope?

ncecgwcz

ncecgwcz1#

配置将在应用程序开始时创建。相反,你可能想做的是把你的班级分成两个班。实际配置部分和计划部分: SchedularConfiguration , SchedularComponent . 然后将配置注入组件。

@StepScope
@Component
class SchedularComponent {

   @Autowired
   SchedularConfiguration config;

}

这将允许你有你想要的范围。通常您不会有一个完整的其他类来配置组件(但您的需求可能会有所不同),而是直接使用 @Value 选择所需应用程序属性的注解: @Value("${schedular.cron}") .

相关问题