1. ホーム
  2. java

[解決済み] Spring Bootでプログラム的にデータソースを設定する

2023-06-30 09:47:41

質問

Spring Bootでは JdbcTemplate を以下のようにします。

コードです。

@Autowired
private JdbcTemplate jdbcTemplate;

プロパティーです。

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

これはクラスのDataSourceを作成します。 org.apache.tomcat.jdbc.pool.DataSource

データソースのユーザ名とパスワードをプログラムで設定するには?

私たちはクレデンシャルをプレーンテキストで保存しないというポリシーを持っており、私が働いているところでは、特定のクレデンシャルプロバイダを使用しなければなりません。

どのように解決すればよいでしょうか。

この場合 DataSourceBuilder を使っている場合は jdbc スターターとなります。また、デフォルトの自動構成ビーンを上書きするためには、ビーンを @Primary

私の場合、プロパティは datasource.postgres という接頭辞で始まるプロパティがあります。

e.g

@ConfigurationProperties(prefix = "datasource.postgres")
@Bean
@Primary
public DataSource dataSource() {
    return DataSourceBuilder
        .create()
        .build();
}

もし、それが実現不可能な場合は

@Bean
@Primary
public DataSource dataSource() {
    return DataSourceBuilder
        .create()
        .username("")
        .password("")
        .url("")
        .driverClassName("")
        .build();
}