Bean 등록 Annotation
@Component | 컴포넌트를 나타내는 일반적인 스테레오 타입으로 <Bean> 태그와 동일한 역할을 한다. |
@Repository | Persistence 레이어, 영속성을 가지는 속성(파일, 데이터베이스)을 가진 클래스 |
@Service | 서비스 레이어, 비즈니스 로직을 가진 클래스 |
@Controller | 프리젠테이션 레이어, 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스 |
Bean 의존관계 주입 Annotation
@Autowired, @Resource 어노테이션은 의존하는 객체를 자동으로 주입해 주는 어노테이션이다.
@Autowired
- 정밀한 의존관계 주입 (Dependency Injection)이 필요한 경우에 유용하다.
- @Autowired는 프로퍼티, setter 메소드, 생성자, 일반메소드에 적용 가능하다.
- 의존하는 객체를 주입할 때 주로 Type 을 이용하게 된다.
- @Autowried 는 <property>, <constructor-arg> 태그와 동일한 역할을 한다.
@Resource
- 어플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용된다.
- @Resource는 프로퍼티, setter 메소드에 적용 가능하다.
- 의존하는 객체를 주입할 때 주로 Name 을 이용하게 된다.
@Autowired, @Resource 어노테이션은 의존하는 객체를 자동으로 주입해 주는 어노테이션인데 @Autowired는 타입으로, @Resource는 이름으로 연결한다는 점이 다르다.
@Value
- 단순한 값을 주입할 때 사용되는 어노테이션이다.
- @Value("Spring") 은 <property .. value="Spring"/> 와 동일한 역할을 한다.
@Qualifier
- @Qualifier 는 @Autowired 어노테이션과 같이 사용되어 진다.
- @Autowired 는 타입으로 찾아서 주입하므로, 동일한 타입의 Bean 객체가 여러 개 존재할 때 특정 Bean 을 찾기 위해서는 @Qualifier 를 같이 사용해야 한다.