@Resource안돼요.... 재질문
- 작성자 :
- 권*주
- 작성일 :
- 2014-04-08 16:22:26
- 조회수 :
- 1,127
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
공통 컴포넌트로 egov-com-servelet.xml을 생성후
<context:component-scan base-package="egovframework">
<context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
<context:exclude-filter expression="org.springframework.stereotype.Service" type="annotation"/>
<context:exclude-filter expression="org.springframework.stereotype.Repository" type="annotation"/>
</context:component-scan>
<util:properties id="imsProperties" location="/WEB-INF/config/ims/ims.properties" />
를 설정하고 아래처럼
package egovframework.ims.ims06.web;
import java.util.Properties;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
@Controller
public class ims999999s00controller extends AbstractController{
@Resource(name = "imsProperties")
Properties imsProperties;
에서는 @Resource(name = "imsProperties") 가 잘 됩니다.
package egovframework.ims.ims00.util;
import java.util.Properties;
import javax.annotation.Resource;
public class language {
@Resource(name = "imsProperties")
Properties imsProperties;
public void language(String Param){
try {
String temp = imsProperties.getProperty(Param + ".search");
System.out.println("-" + temp + "-");
} catch (Exception e) {
e.printStackTrace();
}
}
}
를 JSP에서
language language = new language();
language.language("kor");
이렇게 호출하면 콘솔에서 찍혀야 하는데.........
exception만 발생하고.....
이라고만 찍히네요......-aaaaa-결과가 찍혀야 하는데.......TT
ims.properties의 내용은 이렇습니다.
kor.search=aaaaa
<context:component-scan base-package="egovframework">
<context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
<context:exclude-filter expression="org.springframework.stereotype.Service" type="annotation"/>
<context:exclude-filter expression="org.springframework.stereotype.Repository" type="annotation"/>
</context:component-scan>
<util:properties id="imsProperties" location="/WEB-INF/config/ims/ims.properties" />
를 설정하고 아래처럼
package egovframework.ims.ims06.web;
import java.util.Properties;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
@Controller
public class ims999999s00controller extends AbstractController{
@Resource(name = "imsProperties")
Properties imsProperties;
에서는 @Resource(name = "imsProperties") 가 잘 됩니다.
package egovframework.ims.ims00.util;
import java.util.Properties;
import javax.annotation.Resource;
public class language {
@Resource(name = "imsProperties")
Properties imsProperties;
public void language(String Param){
try {
String temp = imsProperties.getProperty(Param + ".search");
System.out.println("-" + temp + "-");
} catch (Exception e) {
e.printStackTrace();
}
}
}
를 JSP에서
language language = new language();
language.language("kor");
이렇게 호출하면 콘솔에서 찍혀야 하는데.........
exception만 발생하고.....
이라고만 찍히네요......-aaaaa-결과가 찍혀야 하는데.......TT
ims.properties의 내용은 이렇습니다.
kor.search=aaaaa
A
안녕하세요.
표준프레임워크센터입니다.
1) 먼저 컨테이너에서 생성된 오브젝트를 @Resource를 통해 DI하기 위해서는
language 클래스가 스프링 컨테이너에서 관리하는 빈으로 등록되어 있어야합니다.
language 클래스를 빈으로 등록하는 방법은
위 ims999999s00controller 클래스와 같이
@Component, @Controller, @Service, @Repository 중 하나를 용도에 맞게 선택하셔서 클래스 레벨에 선언해주시면 되고,
<context:component-scan ... /> 태그에 의해 자동스캔되어 등록됩니다.
2) 만약 @Component를 선언해주셨다면,
<util:properties id="imsLanguageProperties" location="/WEB-INF/config/ims/ims.language.properties" /> 설정이
context-common.xml 에 있어야합니다.
나머지 설정은 동일합니다.
@Component로 선언된 빈은 default로 생성하기 때문에 <context:include-filter .. />를 선언하지 않으셔도 됩니다.
원래 설정으로 변경하셔도 상관없습니다.
3) 또한 language 오브젝트를 new 연산자로 생성하시면 안되고,
@Resource나 @Autowired와 같은 방법으로 생성해주셔야 합니다.
감사합니다.
표준프레임워크센터입니다.
1) 먼저 컨테이너에서 생성된 오브젝트를 @Resource를 통해 DI하기 위해서는
language 클래스가 스프링 컨테이너에서 관리하는 빈으로 등록되어 있어야합니다.
language 클래스를 빈으로 등록하는 방법은
위 ims999999s00controller 클래스와 같이
@Component, @Controller, @Service, @Repository 중 하나를 용도에 맞게 선택하셔서 클래스 레벨에 선언해주시면 되고,
<context:component-scan ... /> 태그에 의해 자동스캔되어 등록됩니다.
2) 만약 @Component를 선언해주셨다면,
<util:properties id="imsLanguageProperties" location="/WEB-INF/config/ims/ims.language.properties" /> 설정이
context-common.xml 에 있어야합니다.
나머지 설정은 동일합니다.
@Component로 선언된 빈은 default로 생성하기 때문에 <context:include-filter .. />를 선언하지 않으셔도 됩니다.
원래 설정으로 변경하셔도 상관없습니다.
3) 또한 language 오브젝트를 new 연산자로 생성하시면 안되고,
@Resource나 @Autowired와 같은 방법으로 생성해주셔야 합니다.
감사합니다.