我的应用程序正在通过属性设置一个简单的数据源
spring.datasource.username=${database.username}
spring.datasource.password=${database.password}
spring.datasource.url=jdbc:mysql://${database.host}/databasename
它被 hikari autoconfig 拾取。
但是使用时却看不到quartz autoconfig
LocalDataSourceJobStore
<bean id="QuartzClusteredScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- <property name="dataSource" ref="????"/> -->
<property name="jobFactory">
<bean class="com.example.scheduler.AutowiringSpringBeanJobFactory"/>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.jobStore.class">org.springframework.scheduling.quartz.LocalDataSourceJobStore</prop>
<property name="jobDetails">
<list>...
将石英指向 hikariCP 池的正确方法是什么?
如果我省略了 dataSource 属性,就像 Spring 的石英自动配置手册所建议的那样,我得到
java.sql.SQLException: There is no DataSource named 'null'
如果我输入任何其他名称并使用 spring.datasource.name=abc
那么我发现它找不到 abc
或 jdbc/abc
一样。
我试图理解https://github.com/spring-projects/spring-boot/issues/28758的讨论,这似乎是影响我的原因,但一切都被提及得如此轻率,我不确定如何关注。
您可以在 application.properties 中显式设置数据源名称。
spring.datasource.mysql.username=${database.username}
spring.datasource.mysql.password=${database.password}
spring.datasource.mysql.url=jdbc:mysql://${database.host}/databasename
然后在你的bean定义中,你可以尝试引用这个数据源。
我刚刚在以下位置找到了一个示例:http://www.masterspringboot.com/programming/various/getting-started-with-quartz-and-spring-boot/
也许你可以从头开始尝试代码。