2016-11-17 3 views
0

Я работаю над приложением Spring Boot, и я пишу базу данных HealthIndicator. Я встречаю трудности, чтобы получить как объект Явы источника данных, описанные в моей application.yml:Получить источник данных из файла конфигурации

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', no? – baao

+0

Благодарим вас за ответ. Я не написал этот файл конфигурации. Мой коллега сделал, и файл conf не вызвал ошибок до сих пор – user3002512

+0

Вы пытались его изменить? Ошибка указывает, что URL-адрес источника данных отсутствует. Ошибка не похожа на остальную часть вашего кода. – baao

ответ

0

По умолчанию он инициализирует org.apache.tomcat.jdbc.pool.DataSource, который простирается от org.apache.tomcat.jdbc.pool.DataSourceProxy, если вы погрузитесь в этот класс, у него есть «setUrl (String url)», поэтому вам нужно настроить свойства wit h

datasource: 
    driverClassName: org.postgresql.Driver 
    url: jdbc:postgresql://10.26.80.192/myDB 
    username: postgres 
    password: 
Смежные вопросы