@Resource DI NULL 에러
- 작성자 :
- 김*수
- 작성일 :
- 2021-06-01 12:05:12
- 조회수 :
- 3,946
- 구분 :
- 개발환경 / 3.8
- 진행상태 :
- 완료
Q
현재
<!-- component-scan 설정-->
<context:component-scan base-package="egovframework">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
입니다.
패키지구조 내에서
egovframework.let 폴더안에서 폴더를 만들어서 @controller, service, resource ,component 어노테이션들은 di 주입이 잘됩니다.
egovframework.let내에 lms 폴더를 만들어서 impl폴더내에
@Service("LmsService")
public class LmsServiceImpl extends EgovAbstractServiceImpl implements LmsService{
@Resource(name = "LmsDAO")
private LmsDAO lmsDAO;
코딩했습니다.
근데.. egovframework 폴더내에 새로운 utill 폴더를 만들어서 ...
@Component
public class ResLmsLogParse {
@Resource(name = "LmsService")
private LmsService lmsService;
public void insertLmslogInfo(Object lmsobj) {
String logJsonResult = "";
JSONArray jsonArr = (JSONArray)lmsobj;
logJsonResult = jsonArr.toJSONString();
LmsVO lmsvo = new LmsVO();
//end function
}
코딩한후 입클리스를 실행하면 private LmsService lmsService 의 lmsService 가 di 주입이 안되어 null 로나옵니다.
근데 egovframework.let 폴더안에서는
@Resource(name = "LmsService")
private LmsService lmsService;
하면 di 주입이 잘됩니다.
egovframework.let 폴더내에서만 @controller, service, resource ,component 어노테이션이 가능한건가요??
아님 xml파일에 패키지경로가 egovframework.let 되어 있는지 입클리스에서 서치해봐도 이런경로가 없던데..
왜 lmsService null인지 의문입니다..
답변부탁드리겠습니다~(__)
<!-- component-scan 설정-->
<context:component-scan base-package="egovframework">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
입니다.
패키지구조 내에서
egovframework.let 폴더안에서 폴더를 만들어서 @controller, service, resource ,component 어노테이션들은 di 주입이 잘됩니다.
egovframework.let내에 lms 폴더를 만들어서 impl폴더내에
@Service("LmsService")
public class LmsServiceImpl extends EgovAbstractServiceImpl implements LmsService{
@Resource(name = "LmsDAO")
private LmsDAO lmsDAO;
코딩했습니다.
근데.. egovframework 폴더내에 새로운 utill 폴더를 만들어서 ...
@Component
public class ResLmsLogParse {
@Resource(name = "LmsService")
private LmsService lmsService;
public void insertLmslogInfo(Object lmsobj) {
String logJsonResult = "";
JSONArray jsonArr = (JSONArray)lmsobj;
logJsonResult = jsonArr.toJSONString();
LmsVO lmsvo = new LmsVO();
//end function
}
코딩한후 입클리스를 실행하면 private LmsService lmsService 의 lmsService 가 di 주입이 안되어 null 로나옵니다.
근데 egovframework.let 폴더안에서는
@Resource(name = "LmsService")
private LmsService lmsService;
하면 di 주입이 잘됩니다.
egovframework.let 폴더내에서만 @controller, service, resource ,component 어노테이션이 가능한건가요??
아님 xml파일에 패키지경로가 egovframework.let 되어 있는지 입클리스에서 서치해봐도 이런경로가 없던데..
왜 lmsService null인지 의문입니다..
답변부탁드리겠습니다~(__)
환경정보
-
- OS 정보 :
- 표준프레임워크 버전 :
- JDK(JRE) 정보 :
- WAS 정보 :
- DB 정보 :
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크 센터입니다.
현재 주어진 정보만으로 파악했을 때
특별한 이상 상황은 보이지 않는 것 같습니다.
전체 설정 상황이나 보다 상세한 로그가 필요한 것 같습니다.
base-package="egovframework" 이 되어 있으므로
egovframework.let 이하 패키지 또한 스캔에 포함한 영역입니다.
현재 말씀하신 상황이 맞다면
NPE가 발생하는 곳이 정확히 lmsService의 주입이 안되어 발생하는 것이 맞는지 확인이 필요합니다.
또한 Util로 사용할 목적으로 @Component를 작성하신 것이라면
사용 시 객체를 의존 주입이 아닌 객체 생성으로 작성하신것은 아닌지 확인이 필요해 보입니다.
우선 앞서 말씀 드린 바 대로 다른 설정사항을 점검 해 보아야 할 것 같습니다.
감사합니다.
표준프레임워크 센터입니다.
현재 주어진 정보만으로 파악했을 때
특별한 이상 상황은 보이지 않는 것 같습니다.
전체 설정 상황이나 보다 상세한 로그가 필요한 것 같습니다.
base-package="egovframework" 이 되어 있으므로
egovframework.let 이하 패키지 또한 스캔에 포함한 영역입니다.
현재 말씀하신 상황이 맞다면
NPE가 발생하는 곳이 정확히 lmsService의 주입이 안되어 발생하는 것이 맞는지 확인이 필요합니다.
또한 Util로 사용할 목적으로 @Component를 작성하신 것이라면
사용 시 객체를 의존 주입이 아닌 객체 생성으로 작성하신것은 아닌지 확인이 필요해 보입니다.
우선 앞서 말씀 드린 바 대로 다른 설정사항을 점검 해 보아야 할 것 같습니다.
감사합니다.