启动后定义的Spring Boot数据源

时间:2018-10-10 08:41:29

标签: java spring spring-boot datasource

我有一个使用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();

我希望能够在应用程序启动后动态更改数据源。

1 个答案:

答案 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