클래스 하나에 프로퍼티 모으기
ReadingListController에 @ConfigurationProperties 애너테이션을 붙여도 잘 작동하지만 가장 이상적인 방법은 아닐 것이다. 사실 ReadingListController는 아마존과 거의 관련이 없는데도 프로퍼티 접두어가 amazon인 것이 좀 이상하지 않은가? 더구나 추후 ReadingListController를 개선할 때 아마존과 관련 없는 프로퍼티를 구성해야 할 수도 있다.
ReadingListController에 구성 프로퍼티를 포함하기보다는 별도의 빈에 @Configuration Properties 애너테이션을 붙이고 모든 구성 프로퍼티를 이 빈으로 모으는 편이 더 나을 것이다. 예를 들어 코드 3-13의 AmazonProperties는 아마존에 특화된 구성 프로퍼티를 보여 준다.
코드 3-13 빈 안에 구성 프로퍼티 포함(AmazonProperties)
package readinglist; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(“amazon”) // “amazon” 접두어가 붙은 프로퍼티 주입 public class AmazonProperties { private String associateId; public void setAssociateId(String associateId) { // associateId 세터 메서드 this.associateId=associateId; } public String getAssociateId() { return associateId; } }