2016-08-12 10 views
1
Caused by: java.lang.NullPointerException 
    at org.springframework.boot.actuate.endpoint.DataSourcePublicMetrics.initialize(DataSourcePublicMetrics.java:64) ~[spring-boot-actuator-1.3.2.RELEASE.jar:1.3.2.RELEASE] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79] 
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79] 
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:354) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 

사용할 수없는 보조 데이터 소스 데이터베이스 연결이 너무 메트릭을 사용할 때 시작 없지만 메트릭을 사용할 경우에도 운이봄 부팅

endpoints.enabled=false 
endpoints.autoconfig.enabled=false 
endpoints.metrics.enabled=false 

항상으로 작성되는 DataSourcePublicMetrics 콩,하지 않습니다. 이로 인해 데이터베이스 연결을 사용할 수 없을 때 NullPointerException이 발생하여 스프링 부팅이 시작되지 않습니다.

답변

0

히카리 데이터 소스를 사용하고 있으며 데이터베이스를 사용할 수 없을 때 데이터 소스 개체를 만들지 못합니다. 따라서 DataSourcePublicMetrics bean의 NPE입니다. 데이터베이스를 사용할 수 없을 때 데이터베이스를 나중에 사용할 수없는 경우에도 데이터베이스 구성으로 초기화 된 Liky 데이터 원본을 만드는 문제를 피할 수 있습니다. 왜 HikariDataSource에 lazy init을위한 생성자가 없는지 확실하지 않습니다. 기본 생성자가 있지만 데이터베이스 설정은 모든 설정 메소드를 사용하여 설정할 수 없습니다. 이것은 데이터베이스가 항상 시작될 필요는없는 응용 프로그램에 유용합니다.

public class LazyConnectionDataSource extends HikariDataSource { 
    public LazyConnectionDataSource(HikariConfig config) { 
     config.validate(); 
     config.copyState(this); 
    } 
}