我有一个将使用 SQL Server 的 Spring Boot 应用程序。我希望能够在没有 application.properties 的情况下启动应用程序,并在启动后定义 url、用户名和密码(此时我会将所有内容写入 application.properties)。例如,我启动应用程序并从浏览器使用这些参数填充表单。我已经尝试过 DataSourceBuilder 类,但它发生的太早了。
DataSourceBuilder
.create()
.username(username)
.password(password)
.url("jdbc:sqlserver://" + computerName + "\\SQLEXPRESS;DatabaseName=" + dataBaseName)
.driverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
.build();
我希望能够在应用程序启动后动态更改数据源。
最佳答案
有多种方法可以解决您的问题。
您可以使用 @PostConstruct 注解:
Javax 的@PostConstruct 注解可用于注解应该在 bean 初始化后立即运行一次的方法
也许你的代码看起来像这样:
@Component
public class DatabaseService {
private DataSource dataSource;
@PostConstruct
public void init(){
this.dataSource = DataSourceBuilder
.create()
.username(username)
.password(password)
.url("jdbc:sqlserver://" + computerName + "\\SQLEXPRESS;DatabaseName=" + dataBaseName)
.driverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
.build();
}
}
你还需要这个依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
这里有更多方法:tutorial
关于java - 启动后定义的Spring Boot DataSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52736061/