Java @StepScope不适用于SpringBoot中的@ConstructorBinding
我试图在没有setter的情况下创建一个Java @StepScope不适用于SpringBoot中的@ConstructorBinding,java,spring,spring-boot,yaml,spring-bean,Java,Spring,Spring Boot,Yaml,Spring Bean,我试图在没有setter的情况下创建一个@ConfigurationPropertiesbean,所以我使用了@ConstructorBinding。让我们将这个类称为properties froml.java 这很好,bean完全是由yml文件中的属性创建的 configuration类具有必要的设置: @Configuration @ConfigurationPropertiesScan("com.my.package") // this is where Propert
@ConfigurationProperties
bean,所以我使用了@ConstructorBinding
。让我们将这个类称为properties froml.java
这很好,bean完全是由yml
文件中的属性创建的
configuration类具有必要的设置:
@Configuration
@ConfigurationPropertiesScan("com.my.package") // this is where PropertiesFromYml.java is stored
public class MyConfig
我想将@StepScope
添加到该属性froml.java
,因为我的SpringBoot应用程序将运行计划的批处理作业,所以我不想启动该类,只想在作业需要时启动
但是:不幸的是,bean总是在启动时创建的。我想这是因为MyConfig.java类上的
@ConfigurationPropertiesScan
注释。但是我如何告诉您仅在必要时创建bean,如使用@StepScope?配置将在应用程序开始时创建。相反,你可能想做的是把你的班级分成2个小组。实际配置部分和计划部分:SchedularConfiguration
,SchedularComponent
。然后将配置注入组件
@StepScope
@组成部分
类调度组件{
@自动连线
调度配置配置;
}
这将允许您拥有所需的范围。通常,您不会有一个完整的其他类来配置组件(但您的需求可能会有所不同),而是直接使用@Value
注释来选择所需的应用程序属性:@Value(${schedular.cron}”)