@Resource 와 관련된 추가 질문입니다..
- 작성자 :
- 장*주
- 작성일 :
- 2010-10-22 05:25:03
- 조회수 :
- 2,790
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
답변 정말 감사드립니다..
우선 제가 질문한거에 대한 답변을 아래와 같이 해주셨는데요..
<답변내용>
@Resource의 경우는 DI를 위한 설정으로 <bean ../> 안에.. <property ../>의
역할을 대신합니다. 이 것은 위 @Component(하위 3개 포함)가 scan되면서 자동으로
반영된다고 보시며 될 것 같습니다.
<추가질문>
@Resource 가 DI 설정을 위한것임은 알고 있는데 제가 궁금한거는...
1. @Resource 가 DI 되는 시점 입니다... scan 을 할때 이루어 지는것인지??
아니면 호출할때 이루어 지는것인지 입니다.. 위에서 설명해 주신대로 제가
해석 하기로는 scan 되는 시점에 예를 들어 aaa 클래스가 만약 @Controller로
등록이 되어 있다면 aaa는 scan 대상이 되기 때문에 scan이 되면서 그안에서
@Resource 로 등록된 녀석은 바로 DI 가 된다는것 같은데 맞는지요??
2. 위의 질문과 어느정도 연관성이 있는데요... aaa 클래스가 @Controller 일때
(1) aaa 클래스 에서 bbb 클래스를 상속하고 있는데 bbb 클래스에 @Resource
를 선언했다면 이것도 DI 적용대상에 포함이 되나요??
(2) aaa 클래스 에서 상속이 아닌 그냥 import 해서 사용하고 있는 일반 클래스
들에서 @Resource 를 선언하면 이것들도 DI 적용대상에 포함 되나요??
(3) 인터셉터나 AOP 들은 @Resource 를 선언하면 DI 적용대상에 포함 되나요??
이상입니다... 바쁘신데 항상 감사드립니다...
이런 부분들은 책이나 구글링을 아무리 해봐도 나오질 않네요...
우선 제가 질문한거에 대한 답변을 아래와 같이 해주셨는데요..
<답변내용>
@Resource의 경우는 DI를 위한 설정으로 <bean ../> 안에.. <property ../>의
역할을 대신합니다. 이 것은 위 @Component(하위 3개 포함)가 scan되면서 자동으로
반영된다고 보시며 될 것 같습니다.
<추가질문>
@Resource 가 DI 설정을 위한것임은 알고 있는데 제가 궁금한거는...
1. @Resource 가 DI 되는 시점 입니다... scan 을 할때 이루어 지는것인지??
아니면 호출할때 이루어 지는것인지 입니다.. 위에서 설명해 주신대로 제가
해석 하기로는 scan 되는 시점에 예를 들어 aaa 클래스가 만약 @Controller로
등록이 되어 있다면 aaa는 scan 대상이 되기 때문에 scan이 되면서 그안에서
@Resource 로 등록된 녀석은 바로 DI 가 된다는것 같은데 맞는지요??
2. 위의 질문과 어느정도 연관성이 있는데요... aaa 클래스가 @Controller 일때
(1) aaa 클래스 에서 bbb 클래스를 상속하고 있는데 bbb 클래스에 @Resource
를 선언했다면 이것도 DI 적용대상에 포함이 되나요??
(2) aaa 클래스 에서 상속이 아닌 그냥 import 해서 사용하고 있는 일반 클래스
들에서 @Resource 를 선언하면 이것들도 DI 적용대상에 포함 되나요??
(3) 인터셉터나 AOP 들은 @Resource 를 선언하면 DI 적용대상에 포함 되나요??
이상입니다... 바쁘신데 항상 감사드립니다...
이런 부분들은 책이나 구글링을 아무리 해봐도 나오질 않네요...
A
안녕하세요, 장선주님
<추가질문>
@Resource 가 DI 설정을 위한것임은 알고 있는데 제가 궁금한거는...
1. @Resource 가 DI 되는 시점 입니다... scan 을 할때 이루어 지는것인지??
아니면 호출할때 이루어 지는것인지 입니다.. 위에서 설명해 주신대로 제가
해석 하기로는 scan 되는 시점에 예를 들어 aaa 클래스가 만약 @Controller로
등록이 되어 있다면 aaa는 scan 대상이 되기 때문에 scan이 되면서 그안에서
@Resource 로 등록된 녀석은 바로 DI 가 된다는것 같은데 맞는지요??
[답변1]
네, 맞습니다.
Spring IoC container는 객체를 생성하고, 객체간의 의존성을 이어줄 수 있도록 필요한 정보를 제공합니다. 설정 정보는 기본적으로 XML 형태로 작성되며, 추가적으로 Java Annotation을 이용하여서도 설정이 가능합니다.
@Repository, @Service, @Controller는 @Component annotation을 상속받고 있습니다.
Spring IoC Container는 @Component annotation(또는 자손)으로 지정된 class를 XML Bean 정의 없이 자동으로 찾을 수 있습니다.
2. 위의 질문과 어느정도 연관성이 있는데요... aaa 클래스가 @Controller 일때
(1) aaa 클래스 에서 bbb 클래스를 상속하고 있는데 bbb 클래스에 @Resource
를 선언했다면 이것도 DI 적용대상에 포함이 되나요??
[답변2.1] 위의 답변을 참조하시기 바랍니다.
(2) aaa 클래스 에서 상속이 아닌 그냥 import 해서 사용하고 있는 일반 클래스
들에서 @Resource 를 선언하면 이것들도 DI 적용대상에 포함 되나요??
[답변2.2]
DI 적용대상에 포함하시기 위하여 <context:component-scan/> element의 `base-package` attribute의 컴포넌트에 `,`를 사용하여 추가하실 기본 package를 지정하셔야 합니다.
(3) 인터셉터나 AOP 들은 @Resource 를 선언하면 DI 적용대상에 포함 되나요??
[답변2.3]
Spring IoC Container의 기능을 정의하고 있는 기본 인터페이스인 BeanFactory 인터페이스가 있습니다. 이것이 하는 일은 Bean 생성 및 의존성 주입, 생명주기 관리 등의 기능을 제공합니다.
BeanFactory 인터페이스를 상속받는 ApplicationContext는 BeanFactory가 제공하는 기능 외에
Spring AOP, 메시지 리소스 처리(국제화에 사용됨), 이벤트 처리 등의 기능을 제공합니다.
보다 자세한 사항은 다음 사이트를 참조하시기 바랍니다.
http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:fdl:ioc_container
감사합니다
<추가질문>
@Resource 가 DI 설정을 위한것임은 알고 있는데 제가 궁금한거는...
1. @Resource 가 DI 되는 시점 입니다... scan 을 할때 이루어 지는것인지??
아니면 호출할때 이루어 지는것인지 입니다.. 위에서 설명해 주신대로 제가
해석 하기로는 scan 되는 시점에 예를 들어 aaa 클래스가 만약 @Controller로
등록이 되어 있다면 aaa는 scan 대상이 되기 때문에 scan이 되면서 그안에서
@Resource 로 등록된 녀석은 바로 DI 가 된다는것 같은데 맞는지요??
[답변1]
네, 맞습니다.
Spring IoC container는 객체를 생성하고, 객체간의 의존성을 이어줄 수 있도록 필요한 정보를 제공합니다. 설정 정보는 기본적으로 XML 형태로 작성되며, 추가적으로 Java Annotation을 이용하여서도 설정이 가능합니다.
@Repository, @Service, @Controller는 @Component annotation을 상속받고 있습니다.
Spring IoC Container는 @Component annotation(또는 자손)으로 지정된 class를 XML Bean 정의 없이 자동으로 찾을 수 있습니다.
2. 위의 질문과 어느정도 연관성이 있는데요... aaa 클래스가 @Controller 일때
(1) aaa 클래스 에서 bbb 클래스를 상속하고 있는데 bbb 클래스에 @Resource
를 선언했다면 이것도 DI 적용대상에 포함이 되나요??
[답변2.1] 위의 답변을 참조하시기 바랍니다.
(2) aaa 클래스 에서 상속이 아닌 그냥 import 해서 사용하고 있는 일반 클래스
들에서 @Resource 를 선언하면 이것들도 DI 적용대상에 포함 되나요??
[답변2.2]
DI 적용대상에 포함하시기 위하여 <context:component-scan/> element의 `base-package` attribute의 컴포넌트에 `,`를 사용하여 추가하실 기본 package를 지정하셔야 합니다.
(3) 인터셉터나 AOP 들은 @Resource 를 선언하면 DI 적용대상에 포함 되나요??
[답변2.3]
Spring IoC Container의 기능을 정의하고 있는 기본 인터페이스인 BeanFactory 인터페이스가 있습니다. 이것이 하는 일은 Bean 생성 및 의존성 주입, 생명주기 관리 등의 기능을 제공합니다.
BeanFactory 인터페이스를 상속받는 ApplicationContext는 BeanFactory가 제공하는 기능 외에
Spring AOP, 메시지 리소스 처리(국제화에 사용됨), 이벤트 처리 등의 기능을 제공합니다.
보다 자세한 사항은 다음 사이트를 참조하시기 바랍니다.
http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:fdl:ioc_container
감사합니다