@Configuration과 @Bean과 싱글톤

junghan·2023년 6월 9일
0

SpringBootProject

목록 보기
18/35
post-thumbnail

@Configuration 어노테이션은 스프링 컨텍스트에게 해당 클래스가 구성 정보를 제공한다는 것을 알려주는 역할을 합니다. @Bean 어노테이션은 @Configuration 어노테이션이 붙은 클래스 내에서 메서드에 적용되어 스프링 컨텍스트에게 해당 메서드가 빈을 생성하고 반환해야 함을 알려줍니다.

스프링에서 @Bean 어노테이션이 붙은 메서드는 기본적으로 싱글톤 스코프로 동작합니다. 스프링 컨테이너는 해당 메서드를 최초 호출할 때 한 번 실행하고 반환된 빈 객체를 싱글톤으로 관리합니다. 그 이후에 같은 빈을 요청하면 이전에 생성된 인스턴스를 반환합니다.

@Configuration 어노테이션은 @Bean 어노테이션이 지정된 메서드를 포함하는 클래스에 적용됩니다. 이를 통해 스프링은 해당 클래스를 스캔하여 구성 정보와 빈 정의를 인식하고, 스프링 컨텍스트에 등록됩니다.
@Bean 어노테이션이 붙은 메서드는 @Configuration 어노테이션이 지정된 클래스 내에서만 동작하며(@Configuration이 없어도 등록가능하긴함), 다른 클래스에서 해당 빈을 호출하더라도 싱글톤 스코프를 유지합니다.

따라서, @Bean 어노테이션만으로도 싱글톤 스코프를 유지할 수 있습니다. 하지만, @Configuration 어노테이션은 스프링 컨텍스트에게 해당 클래스가 구성 정보를 제공함을 명시적으로 알려주는 역할을 하므로, 스프링이 올바른 방식으로 빈을 관리할 수 있도록 합니다.

정리하면, @Configuration 어노테이션은 스프링 컨텍스트에게 해당 클래스가 구성 정보를 제공한다는 것을 알려주며, @Bean 어노테이션은 싱글톤 스코프로 동작하는 빈을 생성하고 반환하기 위해 사용됩니다. @Configuration 어노테이션은 스프링 내에서 싱글톤을 유지해주는 역할을 합니다. (중복제거)

profile
42seoul, blockchain, web 3.0

0개의 댓글