inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

토비의 스프링 부트 - 이해와 원리

DataSource 자동 구성 클래스

binding error

220

김한솔

작성한 질문수 1

0

질문 전 말씀드리면, Kotlin + Spring Boot를 사용하고 있습니다. 

Datasource Connection Test 코드를 작성하고 테스트할 때 application.yml에서 properties 객체로의 binding시 이슈가 있습니다.

정확하게는 prefix가 존재할 때 binding시 String에서 Properties 객체로 binding을 시도하다가 에러가 발생하고 있고, application.properties 해당 문제가 발생하지 않음과 달리 application.yml에서 prefix 존재하는 경우 발생하고 있습니다.

혹시, 강의에서 진행해주셨던 postProcessAfterInitialization의 내부 로직에서 application.yml + prefix 조합에서의 별도 처리가 필요한걸까요?

binding error를 확인하기 위해 작성한 테스트 코드는 아래와 같습니다.

spring spring-boot spring-jdbc

답변 3

0

토비

일반적으로 properties가 아니고 yml이라고 prefix 관련 문제가 발생하지는 않을텐데요.

정확히 어떤 상황인지 올려주신 코드만으로는 파악하기가 어렵습니다.

실제 에러가 발생하는 코드 전체를 GitHub에 공유해주시면 받아서 한번 확인해보겠습니다. 코드와 함께 어떻게 실행을 할 때 에러가 발생하는지도 알려주세요.

0

김한솔

토비님 답변이 늦었습니다 ㅠㅠ
repository & feature/spring-boot-toby branch 입니다. 올려드립니다 (multi-module 로 구성되어있어 불편하실 수도 있습니다 ㅠㅠ)

MyDataSourcePropertiesTest, MyServerPropertiesTest 등 Properties를 binding하는 테스트를 실행했을때 에러가 발생 유무를 통해 확인했습니다. (서버 가동시에도 동일한 에러가 발생합니다.)

0

김한솔

추가적으로, 제가 debugging 했을때는 java layer에 해당하는 Properties Class에서의 load부분은 이슈가 없었고 Binder에서 bind할때 context객체를 디버깅하면 prefix 존재시 매핑결과가 달랐어서 yml의 경우 하나의 과정을 springframework layer에서 더 거치는게 아닌가 조심스레 추측하고 있습니다.

확인해보니, @SpringBootTest 에서 yml reader하는 기능도 포함되었군요.

1

김한솔

"[DataSource 자동 구성 클래스 테스트] properties와 yml의 차이점 관련 질문입니다." 라는 다른 분의 질문 내용을 통해 원인 파악완료되었습니다! 감사합니다!

0

김한솔

myserver:
  context-path: /my-app
  port: 9090

data:
  url: jdbc:h2:mem:
  driver-class-name: org.h2.Driver
  username: sa
  password:

0

김한솔

@ExtendWith(SpringExtension::class)
@ContextConfiguration(classes = [SpringBootTobyApplication::class])
@TestPropertySource(locations = ["classpath:application.yml"])
class MyDataSourcePropertiesTest {

    @Autowired
    private lateinit var myDataSourceProperties: MyDataSourceProperties

    @Test
    fun testPropertiesBinding() {

        assertNotNull(myDataSourceProperties)
        assertNotNull(myDataSourceProperties.url)
        assertNotNull(myDataSourceProperties.driverClassName)
    }
}

11강에서 cmd에서 spring shell에 $ init 하면 Fail 메세지

0

75

2

TestRestTemplate 을 통해 테스트 실행시 웹 요청 정보가 콘솔에 표시되지 않습니다.

0

85

1

섹션7. 자동구성 정보파일분리 강의 질문(@MyAutoConfiguration 붙힌 이유)

0

201

2

WebApplicationContext를 DispatcherServlet에 this로 넘기는 것

0

279

2

인프라 빈 구성 정보의 분리에서 EnableMyAutoConfiguration 질문드립니다.

0

210

2

질문드립니다.

0

232

2

spring boot 3.3.7로 학습중입니다.

0

369

2

Serverproperties 객체 생성 후 @Impor 어노테이션 사용 이유 용도

0

162

2

spring start io 에서 이제더이상 2.x버전은 지원하지 않는 것 같습니다.

1

296

2

Springboot 3.2 이상에서 파라미터 추론관련

0

913

4

Arrays.copyOf 메서드의 타입 세이프

1

155

2

MyOnClassCondition에 있는 matches method의 Invoke 횟수

1

233

3

인용구의 출처가 궁금합니다.

0

259

1

프로퍼티 빈의 후처리기 도입 AnnotationUtils의 사용

0

236

2

SimpleCacheConfiguration과 빈 등록

0

168

2

MyAutoConfigImportSelector 에서 생성자로 ClassLoader를 주입받을 수 있는 점

0

244

1

IntelliJ project jenerator spring initailizr

0

150

1

강의 자료 레퍼지토리에 업로드

0

216

1

강의자료

0

388

1

Hikari 라이브러리가 없으면 오류가 나는거 아닌가요

0

314

2

Tomcat 포트 프로퍼티 미설정시 랜덤 포트 설정 문의

0

476

5

@Import 로 Bean을 등록해야하는 기준이 뭔지 궁금합니다.

0

340

2

application.properties파일내 프로퍼티 이름

0

210

1

강의 공부방법

0

282

1