JAVA教程:SpringBoot项目如何在启动时等待数据库,待连接成功后再启动项目

前言:

在做项目当中可能会遇到这样的情况,线上部署时如果客户机断电重启后,项目与数据库必须设置自启动,这时如果数据库未启动成功,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();
                }
            }
        }
    }
}

本次教程到这里就结束了,希望大家多多关注支持(首席摸鱼师 微信同号),持续跟踪最新文章吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值