@Configuration

dongbin_Shin·2021년 8월 6일
0

spring

목록 보기
2/2
post-thumbnail

과거에는 xml파일을 이용해 Java config, 즉 설정 파일을 수정했는데 스프링 프로젝트의 크기가 점점 커지고 IDE의 도움을 받을 수 없다. (오타, 자동완성)
그래서 @Configuration어노테이션을 사용해 클래스 파일을 설정파일로 사용하게 되었다.

@Configuration

스프링 설정용 클래스라는 의미를 가진다.
@Configuration가 붙어 있는 클래스 내부에 @Bean메소드가 있을 때, 이 메소드들을 자동으로 실행하여 반환되는 객체를 싱글톤으로 등록해준다.
@Bean메소드만으로도 Bean 등록이 되지만 싱글톤을 보장하지 못한다.
그래서 @Bean메소드를 포함하는 클래스는 항상 @Configuration어노테이션을 사용해준다.
참고로 @Configuration 어노테이션 내부에도 @Component가 있기 때문에 이 클래스도 Bean으로 등록된다.

@Configuration
public class SpringConfig{
	@Bean
	public AlarmDevice alarmDevice(){
		return new SmsAlarmDevice();
	}
}

위의 코드는 아래와 같은 xml설정 Bean을 정의한다.

<bean id="alarmDevice" class="mad.spring.ch4.homecontrol.SmsAlarmDevice"/>

@ComponentScan

@ComponentScan("{경로}")@Configuration을 함께 써주면 {경로}의 경로 이하에 있는 패키지에서 @Component를 모두 찾아 메모리에 올려준다.

@Component 어노테이션이 붙은 객체들은 @ComponentScan을 이용해 메모리에 올린 후 DI를 주입하도록 한다.
@Component 어노테이션이 붙지 않은 객체들은 @Bean어노테이션을 이용해 직접 생성해주는 방식으로 주입한다.

reference: Java Config를 이용한 설정

"본 포스트는 작성자가 공부한 내용을 바탕으로 작성한 글입니다.
잘못된 내용이 있을 시 언제든 댓글로 피드백 부탁드리겠습니다.
항상 정확한 내용을 포스팅하도록 노력하겠습니다."

profile
멋있는 백엔드 개발자

0개의 댓글