본문 바로가기
JAVA&스프링

[Spring] 스프링 컨테이너를 다루는 방법 (Bean , Configuration , Component)

by 개발고구마 2025. 6. 22.

@Configuration

- 클래스에 붙이는 어노테이션

- @Bean을 사용할 때 함께 사용해 주어야 한다

 

@Bean

- 메소드에 붙이는 어노테이션

- 메소드에서 반환되는 객체를 스프링 빈에 등록한다

 

언제 @Service , @Repository 를 사용해야 할까

개발자가 직접 만든 클래스를 스프링 빈으로 등록하고 싶을 때

 

언제 @Configuration , @Bean 을 사용해야 할까

외부 라이브러리, 프레임워크에서 만든 클래스를 등록할 때

 

@Component

- 주어진 클래스를 '컴포넌트'로 간주한다

- 이 클래스들은 스프링 서버가 뜰 때 자동으로 감지된다.

- 서비스, 레포지토리 내부를 보면 상속된 인터페이스에 숨어있음 그래서 동작할 때 자동으로 등록

 

언제 사용?

컨트롤서, 서비스, 레포지토리가 아니고, 개발자가 직접 작성한 클래스를 스프링 빈으로 등록할 때 사용

 

스프링 주입 방법

1. 생성자를 통한 주입 방법 (가장 권장)

2. setter & @Autowired 사용 - 다른 사람이 setter 사용 가능하기 때문에 오작동의 우려

3. 필드에 직접 Autowired 사용 - 테스트 코드 사용 어려움

 

@Qualifier

여러 개의 후보군이 있을 때 하나의 특정 클래스를 가져오고 싶을 때 사용

양쪽 모두 사용할 때 Qualifier 끼리 사용

 

@Primary vs @Qualifier

사용하는 쪽이 직접 적어준 @Qualifier 를 가져옴