我有一个使用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();
我希望能够在应用程序启动后动态更改数据源。
答案 0 :(得分:0)
有多种方法可以解决您的问题。
您可以使用 @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