SpringBoot系列十八:整合Hikari

Hikari是一款非常强大,高效,并且号称“史上最快连接池”。并且在springboot2.0之后,采用的默认数据库连接池就是Hikari。不需要引入依赖,已经在SpringBoot中包含了。

GitHub地址:https://github.com/brettwooldridge/HikariCP

1、在yml中配置

# 数据库配置
spring:
  datasource:
  type: com.zaxxer.hikari.HikariDataSource
  driverClassName: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=false
  username: root
  password: root
  # Hikari 连接池配置
  # 最小空闲连接数量
  hikari:
    minimum-idle: 5
    # 空闲连接存活最大时间,默认60000010分钟)
    idle-timeout: 180000
    # 连接池最大连接数,默认是10
    maximum-pool-size: 10
    # 此属性控制从池返回的连接的默认自动提交行为,默认值:true
    auto-commit: true
    # 连接池名称
    pool-name: MyHikariCP
    # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认180000030分钟
    max-lifetime: 1800000
    # 数据库连接超时时间,默认30秒,即30000
    connection-timeout: 30000
    connection-test-query: SELECT 1

2、Hikari配置说明:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对你的问题,我可以给你提供一些思路和建议。 首先,你可以使用 Spring Boot 作为你整个应用的基础框架,它提供了丰富的功能和插件,使得整合 Quartz 和 PostgreSQL 变得更加简单。 其次,对于数据库连接池,你可以使用 HikariCP,它是一个非常轻量级的连接池实现,性能非常出色,适合用于高并发场景。 最后,对于 Quartz 的整合,你可以参考 Spring Boot 官方提供的 Quartz Starter,这个 Starter 已经将 Quartz 集成到了 Spring Boot 中,并提供了自动配置和一些默认的设置,使得整合变得更加简单。 下面是一个简单的示例,演示如何使用 Spring Boot、HikariCP 和 Quartz 整合 PostgreSQL: 1. 首先,在你的 pom.xml 中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> ``` 2. 在 application.properties 文件中添加以下配置: ```properties spring.datasource.url=jdbc:postgresql://localhost:5432/mydatabase spring.datasource.username=myusername spring.datasource.password=mypassword spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.hikari.maximum-pool-size=10 spring.datasource.hikari.minimum-idle=5 spring.quartz.properties.org.quartz.jobStore.dataSource=myDataSource spring.quartz.properties.org.quartz.dataSource.myDataSource.driver=org.postgresql.Driver spring.quartz.properties.org.quartz.dataSource.myDataSource.URL=jdbc:postgresql://localhost:5432/mydatabase spring.quartz.properties.org.quartz.dataSource.myDataSource.user=myusername spring.quartz.properties.org.quartz.dataSource.myDataSource.password=mypassword spring.quartz.properties.org.quartz.dataSource.myDataSource.maxConnections=10 ``` 3. 在你的代码中配置 Quartz: ```java @Configuration public class QuartzConfig { @Autowired private DataSource dataSource; @Bean public SchedulerFactoryBean schedulerFactoryBean() { SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean(); schedulerFactoryBean.setDataSource(dataSource); schedulerFactoryBean.setApplicationContextSchedulerContextKey("applicationContext"); Properties quartzProperties = new Properties(); quartzProperties.setProperty("org.quartz.scheduler.instanceName", "QuartzScheduler"); quartzProperties.setProperty("org.quartz.scheduler.instanceId", "AUTO"); quartzProperties.setProperty("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX"); quartzProperties.setProperty("org.quartz.jobStore.driverDelegateClass", "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate"); quartzProperties.setProperty("org.quartz.jobStore.useProperties", "true"); quartzProperties.setProperty("org.quartz.jobStore.dataSource", "myDataSource"); quartzProperties.setProperty("org.quartz.jobStore.tablePrefix", "QRTZ_"); quartzProperties.setProperty("org.quartz.jobStore.isClustered", "false"); quartzProperties.setProperty("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool"); quartzProperties.setProperty("org.quartz.threadPool.threadCount", "10"); quartzProperties.setProperty("org.quartz.threadPool.threadPriority", "5"); schedulerFactoryBean.setQuartzProperties(quartzProperties); return schedulerFactoryBean; } @Bean public JobDetail sampleJobDetail() { return JobBuilder.newJob(SampleJob.class) .withIdentity("sampleJob") .usingJobData("name", "World") .storeDurably() .build(); } @Bean public Trigger sampleJobTrigger() { SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10) .repeatForever(); return TriggerBuilder.newTrigger() .forJob(sampleJobDetail()) .withIdentity("sampleTrigger") .withSchedule(scheduleBuilder) .build(); } } ``` 这个配置类定义了一个 SchedulerFactoryBean,它使用我们之前配置的数据源,并设置了 Quartz 的一些属性。同时,我们还定义了一个 SampleJob,它会每隔 10 秒钟执行一次,并输出一条日志信息。 4. 编写 SampleJob 类: ```java public class SampleJob implements Job { private static final Logger LOGGER = LoggerFactory.getLogger(SampleJob.class); @Override public void execute(JobExecutionContext context) throws JobExecutionException { LOGGER.info("Hello, {}!", context.getMergedJobDataMap().get("name")); } } ``` 这个类实现了 Quartz 的 Job 接口,定义了一个 execute 方法,它会在每次调度时被执行。 5. 运行应用程序,你应该会看到类似如下的输出: ``` 2021-10-14 15:31:00.001 INFO 25508 --- [pool-1-thread-1] o.s.s.quartz.SampleJob : Hello, World! 2021-10-14 15:31:10.002 INFO 25508 --- [pool-1-thread-1] o.s.s.quartz.SampleJob : Hello, World! 2021-10-14 15:31:20.001 INFO 25508 --- [pool-1-thread-1] o.s.s.quartz.SampleJob : Hello, World! ... ``` 这个示例演示了如何使用 Spring Boot、HikariCP 和 Quartz 整合 PostgreSQL。当然,这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值