개발/Spring
[Spring]컴포넌트스캔 vs 스프링 빈 직접 등록
흰아리
2022. 2. 25. 01:19
Controller, Service, Repository를 스프링이 인식할 수 있도록 등록해주는 방법은 두가지가 있다.
하나는 주로 편하게 사용하는 컴포넌트 스캔 원리를 사용하는 것이고 다른 하나는 자바빈으로 생성되도록 설정하여 직접 등록해주는 방법이다
전자는 @Component 어노테이션으로 가능한데, 주로 각 클래스의 용도에 맞게 어노테이션을 명명해주어도 된다.
즉, @Controller, @Service, @Repository 어노테이션은 모두 @Component를 내장하고 있다.
그리고 각 클래스가 해당 어노테이션을 통해 컴포넌트 스캔을 하고 있다면 클래스에서 생성한 객채에 @Autowired를 통해 객체 생성(주입)이 가능해진다.
그리고 자바 코드를 통한 Bean 생성 방법은
@Configuration 어노테이션을 가지는 클래스를 생성 후
@Bean 어노테이션을 통해 Service나 Repository가 생성되는 부분을 지정해주면 된다.
* 추가로 @Autowired에는 필드주입, setter 주입, 생성자 주입 방식이 있는데, 생성자 주입 방식을 가장 권고한다.