我在几个环境项目中使用SpringBootStarterQuartz。
在本地环境中,我想使用内存jobstore( spring.quartz.job-store-type=memory
)在所有其他env(preprod,prod…)中,我想使用jdbc jobstore( spring.quartz.job-store-type=jdbc
)
我想在default application.properties文件中放入所有公共属性,并在local env properties文件(application local.properties)中只重写usefulls属性
所以通常我会把它放在application.properties中
spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=never
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
spring.quartz.properties.org.quartz.jobStore.useProperties=false
spring.quartz.properties.org.quartz.jobStore.tablePrefix=qrtz_
spring.quartz.properties.org.quartz.jobStore.isClustered=false
以及application-local.properties
spring.quartz.jdbc.initialize-schema=always
spring.quartz.job-store-type=MEMORY
石英不喜欢这个配置。我面临着这样的例外 java.lang.NoSuchMethodException: No setter for property 'tablePrefix'
一个简单的解决方案是在每个文件中重复所需的属性(我绝对不想要这个解决方案)。
不然我怎么办?
1条答案
按热度按时间omvjsjqw1#
我的方法不好。我们可以使用jdbc jobstore和h2数据库。唯一改变的是driverdelegateclass。对于h2,我们需要使用driverdelegateclass
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.HSQLDBDelegate.
因此,此配置将与h2数据库一起使用: