특정 Bean의 기능 수행을 위해 다른 Bean을 참조해야 하는 경우 사용하는 Annotation으로는 @Autowired, @Resource 그리고 @Inject이 존재합니다.
@Autowired
- Spring Framework에서 지원하는 Dependency 정의 용도의 Annotation으로, Spring Framework에 종속적이긴 하지만 정밀한 Dependency Injection이 필요한 경우에 유용하다.
- 의존관계를 자동설정할 때 사용하며 타입을 이용하여 의존하는 객체를 삽입해 준다. 그러므로 해당 타입의 빈객체가 존재하지 않거나 또는 2개 이상 존재할 경우 스프링은 예외를 발생시키게 된다.
- 멤버변수, setter 메소드, 생성자, 일반 메소드에 적용 가능
- <context:component-scan base-package="패키지">
@Service
필요한 서비스들의 목록을 나열할 수 있는 인터페이스를 만든다.
오버라이드를 이용해서 인터페이스 본체를 작성한다 해당 클래스가 Service라는 것을 알리기 위해서 어노테이션으로@Service라 해준다.
Service단을 beans에 등록
beans파일은 스프링 환경에서 중요한 설정파일이라고 하였다. servlet-context.xml에 등록을 해야한다.
<beans:bean id="userListService" class="서비스를 구현한 클래스경로">
xml파일로 설정 시 초기화 할 때 한번만 로드되고 계속 공유할 수 있게된다. 반드시 service와 dao는 beans에 등록해주어야지 싱글톤과 @Autowired가 가능하게 된다.
컨트롤러단에서 서비스를 호출하기 위해서 우선 서비스 정보를 가지고 있는 클래스를 선언한다. 클래스는 Impl(인터페이스구현한)을 의미하게되고 new로 객체생성없이 하기 위해서 @Autowired를 써준다.
Controller에서 Impl을 Autowired하면 객체 생성없이 Impl안에 메소드()를 호출할 수 있다.
'Spring' 카테고리의 다른 글
[Spring] 기본2 (0) | 2018.11.27 |
---|---|
[Spring] 요청 URI 매칭 (0) | 2018.11.27 |
[Spring] @RequestBody / @ResponseBody (0) | 2018.11.27 |
[Spring] ViewResolver (0) | 2018.11.27 |
[Spring] 기본 (0) | 2018.11.27 |