在将我的应用程序迁移到SpringBatch 5时,我看到在@EnableBatchProcessing annotation中引入了新的属性来配置dataSource,transactionManager,tablePrefix等。我可以像下面这样在annotation中提供批处理“tablePrefix”,这工作正常。
@Configuration
@EnableBatchProcessing(dataSourceRef = "dataSourceCon" , transactionManagerRef =
"getTransactionManager" , tablePrefix = "ABC_BATCH_")
@RequiredArgsConstructor
public class BatchConf {
private final PlatformTransactionManager transactionManager;
private final @Qualifier("dataSourceCon) DataSource dataSourceCon;
private final ConfigurationProperties configProperties; /// this class is annotated with @ConfiguratonProperties and having "tablePrefix" field
/// batch job , step etc
}
字符串
我把“tablePrefix”值放在属性文件中,我想从那里获取它,而不是直接在代码中配置名称。我试图通过返回值来注册一个同名的bean,但没有成功。有人能帮忙吗?
1条答案
按热度按时间nukf8bse1#
你可以在
@EnableBatchProcessing
的tablePrefix
参数中使用Spring's Expression Language(SpEL)。所以现在你有两个选择:1.您可以直接调用属性。这可以通过以下方式完成:
字符串
1.您可以通过名称引用
ConfigurationProperties
bean。bean名称取决于您使用的是@Component
还是类似@EnableConfigurationProperties
或@ConfigurationPropertiesScan
的名称。如果您使用后者,则bean名称由<prefix>-<fully qualified name>
(see relevant Q&A)组成。因此您可以这样做:型
在这些示例中,我假设配置属性的前缀是
config.*
,并且ConfigurationProperties
类位于名为com.example.demo
的包中。第一种方法的优点是它有点短,但它只是读取属性本身,并跳过配置属性类中设置的任何默认值或转换。第二种方法要求您通过确切的名称找到bean,但也允许您调用任何Java方法。