Spring Boot即时重置数据源

我尝试在Spring配置文件或自定义DB属性文件中更改数据库属性(如数据库名称,密码或主机名)时,在Spring

Boot中更新数据源。当属性更改时,应用程序必须通过侦听属性更改来自行更新。

更改数据库配置后,我正在使用Spring执行器来/重新启动bean。但是用户必须明确发出发布请求以重新启动。必须通过侦听更改和更新数据源来避免此步骤。

您能告诉我在Spring Boot中执行此操作的最佳方法吗?

回答:

找到了一种动态更新数据源的方法,

我已经给应用程序提供了包含数据库属性的外部spring配置文件,然后使用@RefreshScope为数据源bean刷新了属性。

线程监视文件更改,并调用执行器refresh()方法。

database.properties

dburl=jdbc://localhost:5432/dbname

dbusername=user1

dbpassword=userpwd

创建数据源,

@RefreshScope

public class DBPropRefresh {

@Value("${dburl}")

private String dbUrl;

@Value("${dbusername}")

private String dbUserName;

@Value("${dbpassword}")

private String dbPassword;

@Bean

@RefreshScope

public DataSource getDatasource() {

return new DatasourceBuilder().create().url(dbUrl).username(dbUserName).password(dbPassword);

}

}

将外部配置文件提供给应用程序,

java -jar myapplication.jar --spring.config.location=database.properties

我创建了一个Java线程类来监视database.properties文件的更改。跟随https://dzone.com/articles/how-

watch-file-system-changes 当有更改时,它将调用refreshEndPoint.refresh()。

在pom.xml中,

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

<version>1.5.6.RELEASE</version>

</dependency>

以上是 Spring Boot即时重置数据源 的全部内容, 来源链接: utcz.com/qa/410855.html

回到顶部