Browse Source

9-16 数据库连接池关闭

milestone-20250727-金币重构三期
lijianlin 3 weeks ago
parent
commit
95fed3af94
  1. 15
      src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java
  2. 16
      src/main/java/com/example/demo/serviceImpl/coin/StatisticsServiceImpl.java
  3. 1
      src/main/resources/application-prod.yml
  4. 2
      src/main/resources/application.yml

15
src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java

@ -21,7 +21,20 @@ public class Mysql1DataSourceConfig {
@Bean(name = "mysql1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.mysql1")
public DataSource mysql1DataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
// 1. 先用 builder 创建出来
HikariDataSource ds = DataSourceBuilder
.create()
.type(HikariDataSource.class)
.build(); // 这里已经把 yml 里的 url/username/password 装好了
// 2. 再补连接初始化 SQL每次拿到连接自动执行
ds.setConnectionInitSql(
"SET SESSION profiling=0,long_query_time=10,sql_mode='TRADITIONAL';");
// 3. 如有需要还可继续补 ds.setMaximumPoolSize()
return ds;
// return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Bean(name = "mysql1SqlSessionFactory")
// @Primary

16
src/main/java/com/example/demo/serviceImpl/coin/StatisticsServiceImpl.java

@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.time.LocalTime;
@ -35,6 +36,7 @@ public class StatisticsServiceImpl implements StatisticsService {
*/
@Override
// @Scheduled(cron = "0 4 * * * ?") // 每小时执行一次
@Transactional(rollbackFor = Exception.class) // 1. 开启事务
public void runHourlyTaskPart1() {
LocalDate today = LocalDate.now(); //取当天日期
List<Statistics> list = statisticsMapper.listPart1All(today);
@ -42,6 +44,8 @@ public class StatisticsServiceImpl implements StatisticsService {
if (!list.isEmpty()) {
statisticsMapper.batchInsertPart1(list);
}
// 2. 日志验证连接已归还
log.info("=== Part1 done, tx commit, connection will be closed by Spring ===");
}
/*
@ -49,6 +53,7 @@ public class StatisticsServiceImpl implements StatisticsService {
*/
@Override
//@Scheduled(cron = "0 8 * * * ?") // 每小时执行一次
@Transactional(rollbackFor = Exception.class) // 1. 开启事务
public void runHourlyTaskPart2() {
//设定起止时间 当天000000至235959
LocalDate today = LocalDate.now();
@ -61,6 +66,9 @@ public class StatisticsServiceImpl implements StatisticsService {
if (!list.isEmpty()) {
statisticsMapper.batchInsertPart2(list);
}
// 2. 日志验证连接已归还
log.info("=== Part1 done, tx commit, connection will be closed by Spring ===");
}
@ -69,6 +77,7 @@ public class StatisticsServiceImpl implements StatisticsService {
*/
@Override
//@Scheduled(cron = "0 12 * * * ?") // 每小时执行一次
@Transactional(rollbackFor = Exception.class) // 1. 开启事务
public void runHourlyTaskYear() {
LocalDate today = LocalDate.now();
LocalDate firstDay = today.withDayOfYear(1);
@ -81,6 +90,9 @@ public class StatisticsServiceImpl implements StatisticsService {
if (!list.isEmpty()) {
statisticsMapper.batchInsertYear(list);
}
// 2. 日志验证连接已归还
log.info("=== Part1 done, tx commit, connection will be closed by Spring ===");
}
@ -89,11 +101,15 @@ public class StatisticsServiceImpl implements StatisticsService {
*/
@Override
//@Scheduled(cron = "0 30 0 * * ?") // 修改为每天 00:30 执行
@Transactional(rollbackFor = Exception.class) // 1. 开启事务
public void runDailyTaskPart2() {
List<Statistics> list = statisticsMapper.listPart2RangeAll();
if (!list.isEmpty()) {
statisticsMapper.batchInsertPart2(list);
}
// 2. 日志验证连接已归还
log.info("=== Part1 done, tx commit, connection will be closed by Spring ===");
}
}

1
src/main/resources/application-prod.yml

@ -9,6 +9,7 @@ spring:
password: aDiw7MERSATdfGta
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
auto-commit: false
pool-name: mysql1HikariCP
maximum-pool-size: 10
mysql2:

2
src/main/resources/application.yml

@ -28,7 +28,7 @@ mybatis:
mysql3:
map-underscore-to-camel-case: true
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
default-executor-type: reuse
upload:
path: D:\upload

Loading…
Cancel
Save