오늘은 Spring DI에서 Annotation에 대해 알아보자.
- XML 파일에는 구동시킬 필수 요소만 작성하고 소스코드에 Annotation으로 표시하여 구동하는 방식을 의미한다
종류 | 역할 |
---|---|
@Component | - 객체(컴포넌트)를 나타내는 일반적인 타입으로써 <bean> 태그와 동일한 역할을 한다. |
@Repository | - 퍼시스턴스(persistence) 레이어, 영속성을 갖는 속성(파일, DB)를 가진 클래스이다. ex) Data Access Object Class |
@Service | - 서비스 레이어, 비즈니스 로직을 가진 클래스 ex) Service Class |
@Controller | - 프리젠테이션 레이어, 웹 애플리케이션에서 View에서 전달된 웹 요청과 응답을 처리하는 클래스이다. ex) Controller Class |
종류 | 역할 |
---|---|
@Autowired | - 정밀한 의존 관계 주입(DI)이 필요한 경우에 유용하다. - @Autowired는 필드 변수, setter 메서드, 생성자, 일반 메서드에 적용이 가능하다. - 의존하는 객체를 주입할 때 주로 Type을 이용하게 된다. - @Autowired는 <property>, <constructor-arg> 태그와 동일한 역할을 한다. |
@Qualifier | @Autowired와 함께 쓰이며, 한 프로젝트 내에 @Autowired로 의존성을 주입하고 하는 객체가 여러개 있을 경우, @Qualifier("name")를 통해 원하는 객체를 지정하여 주입할 수 있다. |
@Resource | - 애플리케이션에서 필요로 하는 자원을 자동으로 연결할 때 사용한다. - @Resource는 프로퍼티, setter 메서드에 적용이 가능하다. - 의존하는 객체를 주입할 때 주로 Name을 이용하게 된다. |
@Value | - 단순한 값을 주입할 때 사용하는 어노테이션이다. - @Value("값")은 <property ... value="값" />와 동일한 역할을 한다. |
Bean으로 사용될 클래스에 특별한 어노테이션(Annotation)을 부여하고 Spring 컨테이너가 이를 통해 자동으로 Bean을 등록하는 방식을 "빈 스캐닝을 통한 자동 인식 Bean 등록 기능" 이라고 한다.
장점
단점
<context:component-scan base-package=“java.spring.framework” />