과거에는 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를 이용한 설정
"본 포스트는 작성자가 공부한 내용을 바탕으로 작성한 글입니다.
잘못된 내용이 있을 시 언제든 댓글로 피드백 부탁드리겠습니다.
항상 정확한 내용을 포스팅하도록 노력하겠습니다."
'Spring' 카테고리의 다른 글
NPM으로 프론트엔드 라이브러리 관리 (0) | 2023.02.06 |
---|---|
@Validation (0) | 2023.02.06 |
@Bean, @Component 차이 (0) | 2023.02.06 |
@Controller, @RestController 차이 (0) | 2023.02.06 |
안전한 Lombok 사용법 (0) | 2023.02.06 |