dev/web

[Spring Boot] datasource bean not working

재삐신생 2017. 8. 17. 06:45
반응형

Config class에서 아래처럼 빈 설정을 하고 사용하다.

@Bean @ConfigurationProperties("spring.datasource") public DataSource dataSource() { return DataSourceBuilder.create().build(); }


dbcp를 변경하고 application.properties에 설정하였으나 jdbc url를 제대로 읽어들이지 못함

propertie를 자동으로 바인딩 해주고 datasource가 만들어질거라 예상했지만, 위 설정으로는 자동바인딩이 되지 않는다.
(수동설정이 우선되므로 자동설정을 못하게 할뿐)

자동바인딩이 안되는 이유는 Builder에 setter가 없기 때문인것 같다.
(자세한건 @ConfigurationProperties어노테이션 동작방식을 더 파악해보아야...)

오히려 스프링부트 자동설정으로 @Autowired를 사용해서 DataSource를 가져오면 정상동작을 한다.

위 어노테이션과 빌더를 사용한 빌드방법은 공식홈에도 custom설정만 설명되고 있다.(spring.datasource는 없음)

실제로 빌드된 DataSource에서 url, driver class등은 전혀 설정되지 않는다.

다만, 기존에 문제가 없었던 이유는 기본 dbcp인 tomcat dbcp의 경우 다른방법(?)으로 설정이 되어 어플리케이션은 정상동작한다.
(이것때문에 더 헤맴)

결론

위설정은 원래 오토바인딩이 안되는 거였다.

@ConfigurationProperties("spring.datasource") 로 DataSourceBuilder 사용하면 안되는 거였다.

근데 기존 dbcp인 tomcat dbcp는 그래도 동작함-_-


ref: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-data-access.html

반응형