2015-03-02 32 views
27

Bahar çizme aşağıdaki ile JdbcTemplate örneğiniYapılandırma DataSource programlı Bahar Boot

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 

Bu sınıfın bir DataSource oluşturun: org.apache.tomcat.jdbc.pool.DataSource

Nasıl ayarlayabilirim DataSource kullanıcı adı/şifre programlı olarak mı?

Kimlik belgelerini düz metin olarak saklamamamız için bir ilkemiz var ve çalıştığım yerde belirli bir kimlik sağlayıcısı kullanmam gerekiyor.

cevap

50

jdbc starter kullanıyorsanız DataSourceBuilder'u kullanabilirsiniz. Ayrıca, varsayılan otomatik yapılandırma fasulyesini geçersiz kılmak için fasulyenizi bir @Primary

olarak işaretlemeniz gerekir. Durumumda datasource.postgres önekiyle başlayan özelliklere sahibim. sizin için uygun değilse

Örn

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

, o zaman yapmanız gereken tek şey @Bean DataSource döndüren bir yöntem açıklama olduğunu

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

@Primary, gerekli değildir. – dunni

+0

create() muhtemelen ilk – Gevorg

+0

Birincil gerekli değildir. @Bean, yay önyüklemesini yapılandırmaya izin verir. sürücü sınıfı adı, url, kullanıcı, gerekli pwd –

9

kullanabilirsiniz. Tam bir çalışma örneği izler.

@Bean 
public DataSource dataSource() { 
    DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create(); 
     dataSourceBuilder.url(dbUrl); 
     dataSourceBuilder.username(username); 
     dataSourceBuilder.password(password); 
     return dataSourceBuilder.build(); 
} 
6

sayesinde yay çizme benim proje olarak feryat projemde, Yardımınız göre normalde benim veri kaynağı yapılandırması tükendi:

**configuration in application.yml** 
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 

Özel DataSource

@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(); 
    } 
} 
+1

Bu yanıt, DataSource'u tanımlamak için varsayılan spring.datasource özelliklerinin nasıl kullanılacağını gösterdiği için yardımcı olur. sadece şifre, diyelim ki, o zaman şifre tanımını application.properties'den (veya application.yml) kaldırmanız ve kodda bir özellik belirlemeniz gerekir. –

1

Daha fazla tarih kaynağı yapılandırması isterseniz

spring.datasource.test-while-idle=true 
spring.datasource.time-between-eviction-runs-millis=30000 
spring.datasource.validation-query=select 1 

kod

@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; 
} 

altına kullanabilirsiniz bakın: Başka fasulye tanımlandığında Autoconfiguration sadece DataSource fasulye oluşturur beri Spring boot jdbc Connection