前言:
在做项目当中可能会遇到这样的情况,线上部署时如果客户机断电重启后,项目与数据库必须设置自启动,这时如果数据库未启动成功,SpringBoot项目就会报错无法启动,所以我们就需要项目等待数据库启动成功后再启动项目,接下来就教大家如何实现这一步骤
第一步、导入pom依赖
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
第二步、配置数据库连接
# 数据库连接
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.master.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true&allowMultiQueries=true
spring.datasource.dynamic.datasource.master.username=root
spring.datasource.dynamic.datasource.master.password=root
第三步、贴入java代码
/**
* 启动校验数据库
*/
@Slf4j
@Component
public class DatabaseInitializer {
@Autowired
private DataSource dataSource;
/**
* 项目启动初始化
*/
@PostConstruct
public void init() {
while (true) {
try (Connection connection = dataSource.getConnection()) {
log.info("Database is up and running.");
// 数据库连接成功,退出循环
break;
} catch (Exception e) {
log.error("Database not available yet, retrying...");
try {
// 每5秒重试一次
Thread.sleep(5000);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
}
}
本次教程到这里就结束了,希望大家多多关注支持(首席摸鱼师 微信同号),持续跟踪最新文章吧~