Search

properties 클래스와 .yml 은 어떻게 매핑할까?

Status
UPLOADING
Date
2024/02/11
Tags
Spring

1. 개요

Google OAuth2 를 설정하던 중 application.yml 에 필요한 속성들을 정의하고 이를 Properties 클래스로 불러와야 할 필요가 있었습니다.
application.yml
oauth: google: client-id: client-secret: redirect-uri: token-uri: resource-uri:
Java
복사
GoogleProperties.java
@Getter @Setter @ConfigurationProperties(prefix = "oauth.google") public class GoogleProperties { private String clientId; private String clientSecret; private String redirectUri; private String tokenUri; private String resourceUri; }
Java
복사
그러던 도중 properties 클래스에 매핑되려면 변수 이름이 같아야 하는게 아닌가? 하는 의문이 들었습니다.

2. 결론

결론부터 말하면 클래스 정의에서 필드 이름은 하이픈(-)을 사용하는 application.yml의 속성 이름과 다를 수 있습니다. 자바에서는 변수명에 하이픈을 사용할 수 없으므로, 스프링은 자동으로 하이픈을 제거하고 카멜 케이스로 변환하여 매핑합니다.
예를 들어, client-id 속성은 clientId 필드에 매핑됩니다.
따라서, application.yml의 속성 이름과 GoogleProperties 클래스의 필드 이름을 하이폰과 카멜 케이스로 설정해 놓는다면 스프링 부트가 자동으로 properties 속성을 해당 필드에 바인딩할 수 있습니다.