[Spring, Spring Boot] @Configuration이란 ?프로그래밍/Java2024. 4. 12. 18:30
Table of Contents
728x90
@Configuration이란 ?
Spring, Spring Boot에서 Bean을 수동으로 등록하기 위해서는, class 상단에 @Configuration 어노테이션을 적용해주고, @Bean을 사용해 수동으로 빈을 등록할 수 있습니다 !
빈을 생성할 때 메서드의 이름으로 빈의 이름이 결정됩니다. 그러므로 중복된 빈의 이름이 존재하지 않도록 주의해줘야합니다 !
@Configuration
public class DatabaseConfig {
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
예시 코드와 같이 의존성 주입을 위해 @Configuration을 사용합니다 !
@Configuration의 역할
@Configuration은 단순히 빈을 등록하기 위한 어노테이션이 아닙니다 :)
빈을 등록할 때 싱글톤(singleton)이 되도록 보장해주고, 스프링 컨테이너에서 빈을 관리할 수 있게됩니다.
즉, @Bean만 사용해도 스프링 빈으로 등록은 되지만 싱글톤이 유지되지 않습니다.
위와 같이 AppConfig를 상속한 proxy AppConfig가 빈으로 등록되고, 싱글톤이 되도록 보장해줍니다 !
AppConfig@CGLIB의 예상 코드는 아래와 같습니다.
@Bean
public MyBean myBean() {
if (myBean이 이미 스프링 컨테이너에 등록되어 있으면?) {
return 스프링 컨테이너에서 찾아서 반환;
} else { //스프링 컨테이너에 없으면 기존 로직을 호출해서 myBean을 생성하고 스프링 컨테이너에 등록
return 생성 후 반환
}
}
@Bean이 붙은 메서드마다 이미 스프링 빈이 존재하면 존재하는 빈을 반환하고, 스프링 빈이 없으면 생성해서 스프링 빈으로 등록하고 반환하는 코드가 동적으로 만들어지기 때문에 싱글톤이 보장되는 것입니다 !
'프로그래밍 > Java' 카테고리의 다른 글
[Java, 자바] instanceof란 ? (0) | 2024.04.13 |
---|---|
[Spring, Spring Boot] @Transactional의 중첩에 대하여 (0) | 2024.04.12 |
[Spring, String Boot] StringUtils 사용 방법 (0) | 2024.04.08 |
[Spring, Spring Boot] @RequiredArgsConstructor란 ? (0) | 2024.04.01 |
[Spring, Spring Boot] @Controller와 @RestController (0) | 2024.03.31 |
@차나니 :: 차나니의 개발일지
개발의 모든 것 !
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!