본문 바로가기

개발/Spring

[Spring]컴포넌트스캔 vs 스프링 빈 직접 등록

Controller, Service, Repository를 스프링이 인식할 수 있도록 등록해주는 방법은 두가지가 있다.

 

하나는 주로 편하게 사용하는 컴포넌트 스캔 원리를 사용하는 것이고 다른 하나는 자바빈으로 생성되도록 설정하여 직접 등록해주는 방법이다

 

전자는 @Component 어노테이션으로 가능한데, 주로 각 클래스의 용도에 맞게 어노테이션을 명명해주어도 된다.

 

즉, @Controller, @Service, @Repository 어노테이션은 모두 @Component를 내장하고 있다.

 

그리고 각 클래스가 해당 어노테이션을 통해 컴포넌트 스캔을 하고 있다면 클래스에서 생성한 객채에 @Autowired를 통해 객체 생성(주입)이 가능해진다.

 

그리고 자바 코드를 통한 Bean 생성 방법은

 

@Configuration 어노테이션을 가지는 클래스를 생성 후

 

@Bean 어노테이션을 통해 Service나 Repository가 생성되는 부분을 지정해주면 된다.

 

@Bean을 통한 스프링 빈 생성(인프런 스프링 입문-김영한 강의 중)

 

* 추가로 @Autowired에는 필드주입, setter 주입, 생성자 주입 방식이 있는데, 생성자 주입 방식을 가장 권고한다.