我试着做一个 @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?
1条答案
按热度按时间ncecgwcz1#
配置将在应用程序开始时创建。相反,你可能想做的是把你的班级分成两个班。实际配置部分和计划部分:
SchedularConfiguration
,SchedularComponent
. 然后将配置注入组件。这将允许你有你想要的范围。通常您不会有一个完整的其他类来配置组件(但您的需求可能会有所不同),而是直接使用
@Value
选择所需应用程序属性的注解:@Value("${schedular.cron}")
.