2017-07-27 8 views
0

Ich habe Probleme beim Festlegen meiner Datenquelleneigenschaften in meiner Java-Bean-Konfigurationsklasse. Anscheinend werden die Eigenschaften nicht korrekt aus der Yaml-Datei eingelesen. Ich erhalte eine Nullzeiger-Ausnahme, wenn versucht wird, auf den Namen der Treiberklasse zuzugreifen.Konfigurieren der Datenquelleneigenschaften

Das ist meine Java Bean-Konfigurationsdatei:

@Configuration 
public class AppConfig { 

    @Autowired 
    private DataSourceProperties properties; 

    //other beans here 

    @Bean 
    public DataSource dataSource(){ 
     HikariDataSource dataSource = new HikariDataSource(); 
     dataSource.setDriverClassName(properties.getDriverClassName()); 
     dataSource.setJdbcUrl(properties.getUrl()); 
     dataSource.setUsername(properties.getUsername()); 
     dataSource.setPassword(properties.getPassword()); 

    @Bean 
    public DataSourceProperties properties(){ 
     return new DataSourceProperties(); 
    } 
} 

ich auch versucht:

@Configuration 
public class AppConfig { 

    //other beans here 

    @Bean 
    public DataSource dataSource(DataSourceProperties properties){ 
     HikariDataSource dataSource = new HikariDataSource(); 
     dataSource.setDriverClassName(properties.getDriverClassName()); 
     dataSource.setJdbcUrl(properties.getUrl()); 
     dataSource.setUsername(properties.getUsername()); 
     dataSource.setPassword(properties.getPassword()); 

     return dataSource; 
    } 

    @Bean 
    public DataSourceProperties properties(){ 
     return new DataSourceProperties(); 
    } 

} 

Ich habe auch versucht springframeowrk.jdbc die DriverManagerDataSource statt Hikari zu verwenden, aber es wäre immer noch nicht funktioniert .

Dies ist meine application.yml Datei in src/main/resources:

spring: 
    datasource: 
     driverClassName: 'com.ibm.db2.jcc.DB2Driver' 
     username: 'appUsername' 
     password: 'appPw' 
     url: 'datasourceURL'  

Hat jemand ein ähnliches Problem auf diese und würde wissen, wie sich die Eigenschaften richtig eingestellt fertig?

+1

Entfernen Sie Ihre 'AppConfig'. Spring Boot konfiguriert alles für Sie. Arbeiten Sie mit dem Framework nicht am Framework. –

Antwort

1

Sie brauchen keine zusätzliche Beans, wenn Sie Ihre Datasource in application.yml

konfigurieren
1

Beispiel meiner config:

spring: 
    datasource: 
    driverClassName: org.mariadb.jdbc.Driver 
    url: jdbc:mysql://localhost:3306/db 
    username: user 
    password: pass 
    connectionInitSql: "SET NAMES 'utf8mb4'" # hikari 
    validationQuery: SELECT 1 
    type: com.zaxxer.hikari.HikariDataSource 

Hikari hat zusätzliche Optionen wie connectionInitSql. Wie bereits vorgeschlagen, ist keine eigene Konfiguration erforderlich.

+0

Du hast meinen Tag mit 'connectionInitSql:" SET NAMES 'utf8mb4' "'! – psv

Verwandte Themen