관리 메뉴

기억하기 프로젝트

[Spring] @Autowired , @Resource 어노테이션 차이 본문

개발이야기/Spring

[Spring] @Autowired , @Resource 어노테이션 차이

sy89 2014. 9. 21. 16:16

@Autowired, @Services 두가지 어노테이션 모두 특정 프로퍼티를 자동으로 연결해주는 작업을 한다.

특정 프로퍼티를 자동으로 연결해 주는 이유는 특정 기능을 수행하기 위해 해당 빈을 사용하기 위함이다.

예를들어, 컨트롤러 클래스에서 BO클래스에 있는 기능을 수행하기 위해서는 위에 있는 두 가지 중 하나를 사용하여 특정 프로퍼티를 자동으로 연결해 주는 것이다.

 

 

  • @Autowired의 경우

 

 

  1. @Autowired는 Spring Framework에서 지원하는 의존주입 용도의 어노테이션이다.  (기본적으로 Type-driven Injection 으로 사용된다.)
  2. 말 그대로 타입으로 참조할 빈을 찾았을 때 Injection이 일어나는데, IoC 컨테이너 내에 같은 타입의 빈이 여러 개 검색되었을 경우, @Qualifier 어노테이션을 사용하여 구분할 수 있다.
  3. 기본적으로 @Autowired가 지정된 프로퍼티는 모두 설정되어야 한다. 만약 스프링이 연결할 빈을 찾지 못하면 예외처리가 발생되고, 이 경우를 대비하여 Required 애트리뷰트를 false로 설정하면 스프링이 호환되는 빈을 찾지 못하여도, 예외처리 없이 프로퍼티를 설정하지 않은 채로 남겨둘 것이다.

 


  • @Resource 어노테이션의 경우.
  1. @Resource는 bean name으로 의존주입을 하고자 하는 경우 사용된다. 기본적으로 스프링은 해당 프로퍼티와 일치하는 빈을 찾을 것이고, 혹은 name 속성을 이용해 명시적으로 빈의 이름을 설정할 수 있다.  
  2. 이름으로 빈 프로퍼티를 자동 연결하려면 JSR-250의 @Resorce 어노테이션을 세터메서드, 생성자, 필드에 적용한다. (JSR-250어노테이션을 사용하려면 JSR 250 의존 라이브러리들을 포함시켜야 한다.)

 

 

<참고> 

1. http://dev.anyframejava.org/anyframe/doc/core/3.2.0/corefw/guide/annotation-dependencies.html

2. 스프링3 레시피


2013/09/22 16:11 작성

 

 

'개발이야기 > Spring' 카테고리의 다른 글

[Spring] web.xml 파일 및 ApplicationContext에 대하여  (1) 2014.09.21
[Spring] POJO란  (0) 2014.09.21