티스토리 뷰
직전 포스팅에서 Application에서 Bean 설정을 했지만,, AutoConfigure에서 설정된 그 값이 그대로 출력되는 현상을 발견했다.
이러한 현상이 발생한 원인을 한번 더 언급하자면,
Component Scan을 통해서 직접 설정한 값이 Bean으로 등록된다고 하더라도 이후에 진행되는 EnableAutoConfigure에서 추가적인 Bean 등록이 이루어져 직접 설정한 Bean의 값이 Overwrite 되었기 때문이다.
따라서, 우리는 이 값이 이미 Bean으로 등록되어 있을 때, AutoConfigure에서 Bean으로 등록하지 않도록 하는
@ConditionalOnMissingBean Annotation을 추가적으로 달아줌으로써 해결할 수 있다.
@Configuration
public class ChanyConfiguration {
@Bean
@ConditionalOnMissingBean
public Chany chany() {
Chany chany = new Chany();
chany.setId(1);
chany.setName("yeol2");
return chany;
}
}
여기서 하나 더 추가적으로, Bean 설정을 쉽게할 수 있는 Application Context에 값을 넣고 이 값을 설정하고자 한다면 아래와 같이 AutoConfigure 프로젝트에 properties class를 추가하여 기존 Configuration class에 주입시켜주면 된다.
1. Properties class 생성
@ConfigurationProperties("chany") // ("prefix")
public class ChanyProperties {
private String name;
Private Lond id;
// getter setter ..
}
2. Configuration에 주입
@Configuration
@EnableConfigurationProperties(ChanyProperties.class)
public class ChanyConfiguration {
@Bean
@ConditionalOnMissingBean
public Chany chany(ChanyProperties properties) {
Chany chany = new Chany();
chany.setName(properties.getName());
chany.setId(properties.getId());
return chany;
}
}
@EnableConfigurationProperties Annotation을 사용하여 Properties class를 주입하여 준다.
위와 같이 설정하고 다시 Maven Install을 하면 Main Project에서 application.properties에서 값을 설정할 수 있게 된다.
chany.name=yeol2
chany.id=99
@ 출처
스프링 부트 개념과 활용 - inflearn, by 백기선님
'프로그래밍 > Spring Boot' 카테고리의 다른 글
[Spring Boot] 6. profile 설정 (0) | 2021.03.08 |
---|---|
[Spring Boot] 5. 외부 설정 (0) | 2021.03.07 |
[Spring Boot] 4. Spring Boot 특징 - 기본편 (0) | 2021.03.02 |
[Spring Boot] 2. 자동 설정 구현 (0) | 2021.03.01 |
[Spring Boot] 1. 자동 설정 (0) | 2021.03.01 |