All Day Tired

스프링 빈 등록 본문

Back/Spring

스프링 빈 등록

yu.dev 2024. 9. 23. 00:14

강의 듣다가 일하면서 쓴 방법이 아닌 빈 등록 방법이 있어서 기억할 겸 정리...

 

우선 빈을 등록하는 방법 전에 빈이란 뭐냐

Bean
  • 서버가 시작되면 스프링 서버 내부에 컨테이너가 만들어지고 이 컨테이너 안에 클래스가 들어감
  • 이 때 다양한 정보도 들어가고 인스턴스화 됨 -> 이렇게 컨테이너 안에 들어간 클래스를 스프링 빈이라 함
  • 의존성이 있다면 스프링 컨테이너가 의존하는 것도 빈으로 등록함
  • 즉, 스프링 컨테이너가 알아서 관리해주는 자바 객체

스프링이 빈으로 등록한 걸 찾아서 알아서 객채 생성해주고 이걸 통해서 제어의 역전도 일어나고 이렇다고 이해 중...

 

그렇다면 이런 빈을 등록하는 방법은?

  • 컴포넌트 스캔과 자동 의존관계 설정
  • 자바 코드로 직접 스프링 빈 등록

이렇게 2가지 방법이 있다.

 

1. 컴포넌트 스캔과 자동 의존관계 설정

이건 그냥 내가 회사에서 쓰는 방법이다.(어노테이션을 사용하는 방법)

@Component 어노테이션이 있으면 스프링 빈으로 자동 등록이 됨

@Controllor, @Service, @Repository들은 @Component을 포함하고 있어 알아서 스프링 빈으로 자동 등록

 

2. 자바 코드로 직접 스프링 빈 등록

src > main > java 보다는 하위 controller, service, repository 패키지 보다는 상위 위치에 빈을 등록할 class 파일을 추가(보통 ***Config 이름으로 지음)

<***Config.java>

@Configuration
public class ***Config{
    @Bean
    public ***Service **Service(){
        return new ***Service(**Repository());
    }
    
    @Bean
    public ***Repository **Repository(){
       return new ***Repository();//추후 repository를 변경할 예정이라면 이 부분의 repository 이름만 변경해주면 됨
    }
}

이런식으로 자바코드로 직접 빈을 등록하게 됨

controller는 어쩔 수 없이 @Controller를 사용해서 빈으로 등록해야 함

Comments