본문 바로가기

spring/Annotation

@Resource

@Resource는 @Autowired와 같이 property injection을 위한 어노테이션이다.


차이점은 


@Autowired는 객체 타입을 보고 맵핑 된다면


@Resource는 객체 name(id)를 보고 맵핑이 된다.


@Resource() 괄호에 객체 name을 명시하지 않으면 @Autowired 처럼 해당 레퍼런스변수의 타입과 똑같은 객체 name을 찾는다.


@Resource(name="testClass") 라고 별도로 명시 한다면 해당 name을 가진 class와 맵핑한다.


다시 말해서


설정파일의 <bean id="testClass" class="com.TestClass"/> bean태그에 설정된 id(name도 가능)를 찾아서 맵핑


혹은


@Component

public class TestClass{

}


@Component("testClass")

public class TestTestClass{

}


로 설정되어 있는 class를 찾아서 맵핑


따라서 @Controller나 @Service, @Repository 어노테이션을 사용한 클래스도 name만 같다면 맵핑된다.


같은 얘기지만


@Controller("testController")


라고 명시되어 있으면


@Resource(name="testController") 라고 맵핑 해주면 된다.


만약 변수 이름이 아래와 같다면(@Resource name을 명시하지않으면)


@Resource

TestController testController


@Autowired같이 name이 아닌 레퍼런스변수타입인 TestController의 객체를 찾아서 맵핑한다.


참고로


@Resource

@Resource()


똑같다


'spring > Annotation' 카테고리의 다른 글

@Scope - @Component 옵션  (0) 2014.05.07
@Value, Spring EL  (0) 2014.05.07
어노 테이션을 사용하기 위한 설정  (0) 2014.05.02
@component : @Service,@Repository,@Controller  (0) 2014.05.02
@Autowired  (2) 2014.05.02