묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
히카리 커넥션 풀 생성할 때 로그가 좌르르르 나오지 않습니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]>> 환경스프링부트 3.1.0히카리: 5.0.1커넥션 풀 10개 지정하고 나서 테스트 코드 돌려볼 때, 영한님 화면에서는 Config 로그가 주르르 나오는데, 저는 나오질 않습니다. 혹시라도 application.properties에서 누락한 게 있는지 소스를 다운받아 보았지만 아니었습니다.application.properties에 로그 관련 넣을 수 있는 설정이 있길래 다음과 같은 값을 넣어봤지만 로그 내용이 달라지지 않습니다.logging.level.com.zaxxer.hikari=TRACElogging.level.com.zaxxer.hikari.HikariConfig=DEBUG로그는 하기 이미지처럼 나오는 게 전부입니다.예제도 똑같이 따라하고 있는데 버전이 달라지면서 달라진 기능상의 차이일까요.@Test void dataSourceConnectionPool() throws SQLException, InterruptedException { // 커넥션 풀링 HikariDataSource dataSource = new HikariDataSource(); dataSource.setJdbcUrl(URL); dataSource.setUsername(USERNAME); dataSource.setPassword(PASSWORD); dataSource.setMaximumPoolSize(10); // 10 is default dataSource.setPoolName("YourPool"); useDataSource(dataSource); Thread.sleep(1000); } private void useDataSource(DataSource dataSource) throws SQLException { Connection connection1 = dataSource.getConnection(); Connection connection2 = dataSource.getConnection(); log.info("connection={}, class={}", connection1, connection1.getClass()); log.info("connection={}, class={}", connection2, connection2.getClass()); } +추가DataSourceDriverManager를 사용할 때도 관련한 로그가 안 뜹니다..새로운 커넥션을 생성했다는 로그요..(Creating new jdbc DriverManager Connectino to)
-
해결됨토비의 스프링 부트 - 이해와 원리
여러 DataSource 빈 등록 우선순위를 가늠할 수 없었습니다
안녕하세요 토비님. 우선, 감동으로 청강을 이어갈 기회를 얻게되어 참 감사드립니다.아래는 섹션8 - DataSource 자동 구성 클래스 파트의 @Bean 메서드 등록과정에 생긴 문제입니다.의문점은 메서드 선언 순서에 영향을 받는다는것을 알게되서 다음처럼 2번의 테스트를 진행했습니다.@Bean 메서드 선언순서 에 따른 등록 테스트simple , hikarihikari, simple 1 결과: simple 이 등록됨 /* DataSourceConfig.java */ @Bean @ConditionalOnMissingBean public DataSource simpleDriverDataSource() { ... } @Bean @ConditionalOnMissingBean @ConditionalMyOnClass("com.zaxxer.hikari.HikariDataSource") public DataSource hikariDataSource() { ... }hikari 에 `@ConditionalMyOnClass` 가 있기때문에 등록될 것으로 예상했지만, simple 이 등록되었습니다. 2 결과: hikari 가 등록됨 @Bean @... public DataSource hikariDataSource() { ... } @Bean @... public DataSource simpleDriverDataSource() { ... } 기묘하게도 @Bean 메서드 선언순서를 바꾸니 Hikari 빈이 등록되었습니다. 이상하다 싶어, @Primary 와 @Order(n) 을 주고 다시 테스트 해봤지만, 영향을 주지 않았습니다. 질문: 위와 같이 @Bean 메서드 순서에 영향을 받는 이유가 궁금합니다.이 결과로 @ConditionalOnClass 의 인식되는 FQCN 의 조건을 바꿔보기도 하고, 위치도 바꿔봤는데, 이렇다할 동작방식을 파악하기 힘들었습니다.그리고 @Primay 나 @Order 를 붙여가며 추가적인 등록순서에 대해 테스트를 진행했으나, 이것들 역시 영향을 주지 않았습니다.여러 곳에서 알아본 바, @Bean 메서드는 등록순서에 영향을 주지 않는것으로 알고있었는데, 이런 경우에는 어떤 매커니즘이 동작하는지가 궁금합니다. 이 결과를 보고 생각에 혼란이 와서 질문을 드리게 되었어요. 혹시 제가 놓친것이 있다면 조언을 부탁드려도 되겠습니까? 읽어주셔서 감사합니다☺️