Spring boot에서 사용되는 각종 설정 정보들을 세팅하는 곳이 .properties, .yml이다.
OAuth를 사용한 소셜 로그인 구현 과정에서 yml에 있는 google의 clientId와 scope를 전달하는 API를 개발하는 과정에서 해당 기능이 필요하여 사용하게 되었다.
build.gradle
annotationProcessor('org.springframework.boot:spring-boot-configuration-processor')
configurationProperties를 사용하기 위해 build.gradle에서 dependencies
에 추가해주자
config class
@Configuration
@ConfigurationProperties(prefix="spring.security.oauth2.client.registration.google")
@Getter
@Setter
public class SocialLoginYamlConfig {
private String clientId;
private String scope;
}
@Configuration
어노테이션을 사용한다.@ConfigurationProperties
를 이용해서 prefix
에 해당하는 요소들을 가져올 수 있도록 세팅한다.prefix
에 [spring.security.oauth2.client.registration.google](http://spring.security.oauth2.client.registration.google)
값을 넣는다.@Getter
, @Setter
추가.@Setter
를 추가하지 않으면 에러가 뜬다!!spring:
security:
oauth2:
client:
registration:
google:
client-id: [아이디]
client-secret: [비밀번호]
scope: profile,email
@RequiredArgsConstructor
public class MyClass{
final private SocialLoginYamlConfig socialLoginYamlConfig;
public String getInfo(){
return socialLoginYamlConfig.getClientId();
}
}
@RequiredArgsConstructor
를 통해 빈주입을 해주었다.getClientId()
를 통해서 clientId 값을 얻어올 수 있다.prefix
를 잘못 넣어줘서 해당 에러가 발생했다.client-id
값을 가져오고 싶다면, prefix는 client-id
전까지의 모든 경로를 다 넣어주어야 한다. 그런데 나는 spring.security.oauth2.client.registration
까지 prefix
에 넣어주었고, 그 결과 값을 계속해서 가져오지 못하고 null
값이 떴다.spring:
security:
oauth2:
client:
registration:
google:
client-id: [아이디]
client-secret: [비밀번호]
scope: profile,email
@Configuration
@ConfigurationProperties(prefix="spring.security.oauth2.client.registration.google")
@Getter
@Setter
public class SocialLoginYamlConfig {
private String clientId;
private String scope;
}