Mar*_*ace 59 java spring datasource credential-providers spring-boot
使用Spring Boot,我可以JdbcTemplate使用以下内容实例化:
码:
@Autowired
private JdbcTemplate jdbcTemplate;
Run Code Online (Sandbox Code Playgroud)
属性:
spring.datasource.url=jdbc:postgresql://my_url:my_port/my_other_stuff
spring.datasource.username=my_user_name
spring.datasource.password=my_password
spring.datasource.driver-class-name=org.postgresql.Driver
Run Code Online (Sandbox Code Playgroud)
这创建了一个类的DataSource: org.apache.tomcat.jdbc.pool.DataSource
如何以编程方式设置DataSource用户名/密码?
我们的策略是不以纯文本格式存储凭据,我必须在我工作的地方使用特定的凭据提供程序.
Edd*_*dez 82
您可以使用DataSourceBuilder,如果你使用的是jdbc首发.此外,为了覆盖默认的自动配置bean,您需要将bean标记为@Primary
在我的情况下,我有以datasource.postgresprefix 开头的属性.
例如
@ConfigurationProperties(prefix = "datasource.postgres")
@Bean
@Primary
public DataSource dataSource() {
return DataSourceBuilder
.create()
.build();
}
Run Code Online (Sandbox Code Playgroud)
如果您不可行,那么您可以使用
@Bean
@Primary
public DataSource dataSource() {
return DataSourceBuilder
.create()
.username("")
.password("")
.url("")
.driverClassName("")
.build();
}
Run Code Online (Sandbox Code Playgroud)
小智 21
我的spring-boot项目已根据您的帮助正常运行.yaml数据源配置是:
spring:
# (DataSourceAutoConfiguration & DataSourceProperties)
datasource:
name: ds-h2
url: jdbc:h2:D:/work/workspace/fdata;DATABASE_TO_UPPER=false
username: h2
password: h2
driver-class: org.h2.Driver
Run Code Online (Sandbox Code Playgroud)
自定义数据源
@Configuration
@Component
public class DataSourceBean {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
@Primary
public DataSource getDataSource() {
return DataSourceBuilder
.create()
// .url("jdbc:h2:D:/work/workspace/fork/gs-serving-web-content/initial/data/fdata;DATABASE_TO_UPPER=false")
// .username("h2")
// .password("h2")
// .driverClassName("org.h2.Driver")
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
Rod*_*yas 11
您需要做的就是注释一个返回带有@Bean的DataSource的方法.完整的工作示例如下.
@Bean
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.url(dbUrl);
dataSourceBuilder.username(username);
dataSourceBuilder.password(password);
return dataSourceBuilder.build();
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是最新的Spring Boot(带有jdbc starter和Hikari),则会遇到:
java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.
解决此问题的方法:
datasource.oracle.url=youroracleurl
@Primary是必需的!):@Bean
@Primary
@ConfigurationProperties("datasource.oracle")
public DataSourceProperties getDatasourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("datasource.oracle")
public DataSource getDatasource() {
return getDatasourceProperties().initializeDataSourceBuilder()
.username("username")
.password("password")
.build();
}
Run Code Online (Sandbox Code Playgroud)
如果你想要更多的日期源配置,例如
spring.datasource.test-while-idle=true
spring.datasource.time-between-eviction-runs-millis=30000
spring.datasource.validation-query=select 1
Run Code Online (Sandbox Code Playgroud)
你可以使用下面的代码
@Bean
public DataSource dataSource() {
DataSource dataSource = new DataSource(); // org.apache.tomcat.jdbc.pool.DataSource;
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setTestWhileIdle(testWhileIdle);
dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMills);
dataSource.setValidationQuery(validationQuery);
return dataSource;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
158342 次 |
| 最近记录: |