如何将quartz指向spring hikariCP数据源?

问题描述 投票:0回答:1

我的应用程序正在通过属性设置一个简单的数据源

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的讨论,这似乎是影响我的原因,但一切都被提及得如此轻率,我不确定如何关注。

spring quartz-scheduler hikaricp
1个回答
0
投票

您可以在 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/

也许你可以从头开始尝试代码。

© www.soinside.com 2019 - 2024. All rights reserved.