스프링 컨테이너의 구성
의 순으로 작동한다고 생각하면 편하다
그렇기 때문에
Controller 역활을 하는 클래스에는 @Controller
Service 역활을 하는 클래스에는 @Service
Repository 역활을 하는 클래스에는 @Repository
어노테이션을 적용시키면된다
위 어노테이션 3가지의 상위 어노테이션인 @Component 라는 어노테이션도 존재한다
자바코드로 직접 스프링 빈 등록하기
위의 방식으로 직접 Bean 등록이 가능해진다
@Configuration 어노테이션을 스프링 컨테이너 생성시 찾아서 @Bean을 객체화해서 컨테이너에 빈의 형태로 올려준다.
@Service, @Repository는 해당 방법으로 이식이 가능하다
@Controller는 왠만하면 어노테이션을 사용해서 사용하는 것이 좋다
자바로 직접 Bean 등록, 어노테이션 등록의 차이점
Autowired의 역활
@Autowired 로 의존성을 주입하면 작동 되는 스프링 컨테이너에서 맞는 객체를 가져와서 주입해준다
- Service
- Repository
위의 코드에서 보면 Service 클래스에서 Repository 클래스를 주입받고 있다.
여기서 Autowired는
Spring 컨테이너에 등록 된 Repository 클래스(@Repository가 입력되어있어서 자동으로 등록된다)를 찾아서 Service에 주입시켜준다는 의미가 되고, Service 클래스에서는 스프링 컨테이너에 등록되어있는 Repository를 사용할 수 있게 된다.
대부분의 경우, 생성자 주입을 선호한다