@Configuarion
스프링 설정 클래스임을 나타내는 어노테이션
이 클래스는 스프링 컨테이너가 관리할 Bean 정의들을 담고 있는 클래스임을 알려주는 겁니다.
- 내부적으로 @Component를 포함하고 있어 컴포넌트 스캔 대상이 됩니다.
- 클래스 내의 @Bean 메서드들을 호출해서 반환된 객체들을 스프링 컨테이너에 등록합니다.
- 스프링은 이 클래스를 프록시 방식으로 처리해, 싱글톤을 보장합니다.
예를 들어, 아래 코드는 싱글톤을 깨지 않고 MemberService와 MemberRepository를 공유합니다.
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
💡 @Configuration이 없다면 @Bean 메서드가 호출될 때마다 새로운 객체가 생성될 수 있습니다. (싱글톤이 깨질 수 있음)
@Bean
@Bean은 메서드에 붙여서 해당 메서드의 반환 객체를 스프링 빈으로 등록하도록 하는 노테이션입니다.
- 일반적으로 @Configuration 클래스 안에서 사용됩니다.
- XML 설정 대신 자바 코드로 빈을 등록할 수 있게 해줍니다.
- 메서드 이름이 빈의 이름으로 사용됩니다 (예: memberService → "memberService"라는 이름의 빈 등록)
@Configuration과 @Bean의 관계
- @Bean은 객체 하나하나의 등록 단위
- @Configuration은 이러한 등록들을 묶는 설정 클래스 단위
즉, @Configuration은 여러 개의 @Bean을 담는 컨테이너 역할,
@Bean은 그 컨테이너 안에서 실제로 생성하고 등록할 객체 정의 역할을 합니다.
728x90
'공부 > 백엔드' 카테고리의 다른 글
[Spring Boot] Test 코드 작성 하기 (단축키) (0) | 2025.06.28 |
---|---|
[Spring Boot] 스프링 개념 - 다형성 (4) | 2025.06.09 |
[Spring Boot] - 내장 서버의 종류, 설정(포트번호, HTTPS 등), 동작 원리 (1) | 2025.06.08 |
Spring Boot - Bean 정의, 생성 방법, 생명 주기 (1) | 2024.07.06 |