我试图使用SpringBoot运行Quartz Scheduler . 使用Quartz Jdbc数据存储 . 出于安全原因,我们希望从属性文件中选择Db凭据 . 根据我从这里(Using env variable in Spring Boot's application.properties)和springBoot文档的理解,SpringBoot自动替换application.properties中的环境变量,但我没有看到这一点 . 这是我在运行应用程序之前采购的系统环境文件
export DB_HOST=localhost
export DB_PORT=11111
export DB_USER=root
export DB_PASSWORD=root
export QUARTZ_DB_NAME=quartz
这是我的application.properties
org.quartz.dataSource.quartzDataSource.URL =jdbc:mysql://${DB_HOST}:${DB_PORT}/${QUARTZ_DB_NAME}
org.quartz.dataSource.quartzDataSource.user = ${DB_USER}
org.quartz.dataSource.quartzDataSource.password = ${DB_PASSWORD}
和我的配置类
@Configuration
public class ConfigureQuartz {
@Autowired
private ApplicationContext applicationContext;
@Bean
public SchedulerFactoryBean schedulerFactoryBean() throws IOException
{
final SchedulerFactoryBean quartzScheduler = new SchedulerFactoryBean();
quartzScheduler.setSchedulerName("mdsScheduler");
quartzScheduler.setQuartzProperties(quartzProperties());
final AutoWiringSpringBeanJobFactory jobFactory = new AutoWiringSpringBeanJobFactory();
jobFactory.setApplicationContext(applicationContext);
quartzScheduler.setJobFactory(jobFactory);
return quartzScheduler;
}
@Bean
public Properties quartzProperties() throws IOException {
final PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
propertiesFactoryBean.setLocation(new ClassPathResource("/application.properties"));
propertiesFactoryBean.afterPropertiesSet();
return propertiesFactoryBean.getObject();
}
但是当我使用java -jar <> . java运行我的spring应用程序时,我没有看到值被替换 .
我可以通过使用System.getEnv()读取值来解决这个问题,但如果可以替换这些值,那么这将是很好的 . 不知道为什么它不工作:(