【发布时间】:2019-03-15 02:51:59
【问题描述】:
我有一个将使用 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();
我希望能够在应用程序启动后动态更改数据源。
【问题讨论】:
-
“发生得太早”是什么意思? DataSourceBuilder 可以随时调用,所以一般如果提前调用,就推迟这个调用。
-
它发生在应用程序启动期间,我需要在应用程序启动后以某种方式调用它。
-
所以也许你可以创建一些像 DataSourceFactory 这样的组件,使用单一方法来包装对 DataSourceBuilder 的调用?这个 DataSourceFactory 可以注入到其他所有组件中并用于创建数据源。
-
在我看来,您不能在这种情况下使用默认数据源。您必须使用所需的参数手动定义数据源,并在 JdbcTemplate 或其他任何地方使用相同的参数。您能告诉我您使用的是 JPA 实体还是 JdbcTemplate?
-
我正在使用这个依赖
spring-boot-starter-data-jpa ,它包含jdbc starter和jpa。
标签: java spring spring-boot datasource