2016-11-17 9 views
0

私はSpring Bootアプリケーションを開発中で、データベースHealthIndicatorを作成しています。私は私のapplication.ymlで説明したデータソースオブジェクトのJavaとして取得するには困難を満たす:設定ファイルからデータソースを取得

datasource: 
    driverClassName: org.postgresql.Driver 
    jdbcUrl: jdbc:postgresql://10.26.80.192/myDB 
    username: postgres 
    password: 

私が試したJavaコードは次のとおりです。

@Component 
public class DBHealthIndicator extends AbstractHealthIndicator { 

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

    public DBHealthIndicator() { 
     super(); 
    } 

    private boolean result = false; 

    @Bean 
    @Primary 
    public DataSourceHealthIndicator dbHealthIndicator() { 
     return new DataSourceHealthIndicator(getDataSource(), "SELECT * FROM USERS"); 
    } 

    @Override 
    protected void doHealthCheck(Health.Builder builder) throws Exception { 

     Health h = dbHealthIndicator().health(); 
     Status status = h.getStatus(); 
     if (status != null && "DOWN".equals(status.getCode())) { 
      result = false; 
     } else { 
      result = true; 
     } 
    } 

    public boolean isResult() { 
     return result; 
    } 

    public void setResult(boolean result) { 
     this.result = result; 
    } 

} 

私が手にエラーがある:

java.sql.SQLException: The url cannot be null 
    at java.sql.DriverManager.getConnection(DriverManager.java:649) 
    at java.sql.DriverManager.getConnection(DriverManager.java:208) 
..... 
+0

'jdbcUrl'は' url'にする必要がありますか? – baao

+0

あなたの答えをありがとう。私はこの設定ファイルを書きませんでした。私の同僚がして、confファイルは今まで何のエラーも発生していません – user3002512

+0

あなたはそれを変更しようとしましたか?エラーはあなたのデータソースにURLがないことを示します。エラーはコードの残りの部分に関連するようには見えません – baao

答えて

0

デフォルトでは、から拡張されたorg.apache.tomcat.jdbc.pool.DataSourceが初期化されます。このクラスに入ると、 'setUrl(String url)'が設定されているため、プロパティを設定する必要がありますh

datasource: 
    driverClassName: org.postgresql.Driver 
    url: jdbc:postgresql://10.26.80.192/myDB 
    username: postgres 
    password: 
関連する問題