티스토리 뷰

직전 포스팅에서 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 백기선님

 

댓글
링크
최근에 올라온 글
Total
Today
Yesterday