Spring Boot 에서는 Spring 모듈들의 설정들을 자동으로 셋팅해주어 일일히 구현하지 않더라도 빠르게 사용할 수 있다.
이를 Auto-Configuration 이라고 한다. 예를 들어, 서버의 IP 나 포트 설정 정보 등을 받기 위해 클래스를 구현하고 외부 파일에서 값을 받아와 셋팅을 해야 하는데 이러한 절차를 각자 코딩하여 셋팅하면 설정 파일들도 중구난방이 되고 유지보수 하기가 불편해진다. 다행히도 Spring Boot 에서는 외부에서 값을 설정할 수 있는 방법을 통일했다.
Spring Boot 가 애플리케이션을 구동할 때 자동으로 로딩하여 참조하는 파일이 applicatioin.properties 이다.
이 application.properties 에 정의된 형식에 맞게 key 와 value 를 셋팅하면, @Value("${변수 이름}") 어노테이션으로 가져와서 사용할 수 있다. 그런데 내가 작성한 프로퍼티가 아니라 써드 파티 모듈의 프로퍼티라면 이야기가 달라진다.
모듈이기 때문에 현재 프로젝트의 application.properties 파일에 정의되어 있지도 않고, 공식 문서도 옛날 것이라면 어디서 이러한 정보를 찾아야 될까? 정답은 아래 spring-projects/spring-boot 프로젝트 github 소스코드를 직접 살펴보아야 한다.
써드 파티 모듈에서 application.properties 설정 값 찾는 방법
예를 들어, rsocket 관련 spring boot 설정 값들을 보고 싶다면, 위 github 에서 rsocket 관련 소스코드를 찾아 @ConfigurationProperties 어노테이션이 선언된 클래스를 확인하면 된다.
@ConfigurationProperties(" 속성 이름 ") 에서 첫 번째 속성을 찾고, 클래스 내부에 변수들을 콤마 뒤에 붙여 설정 값을 기입하면 된다. 이 예제에서는 @NestedConfigurationProperty 어노테이션이 추가로 붙어 있으므로 두 번째 속성을 기입해야 Server 클래스 내부의 변수들을 설정 값으로 사용할 수 있다. 사용 방법은 아래와 같다.
spring.rsocket.server.port = Integer 형식
spring.rsocket.server.address = InetAddress 형식
spring.rsocket.server.transport = RSocketServer.Transport 형식
spring.rsocket.server.mappingPath = String 형식
'JAVA > Spring' 카테고리의 다른 글
[Spring] Bean 내부에는 변수를 생성해서는 안 된다. (0) | 2022.10.04 |
---|