Service, Dao 질문
- 작성자 :
- 박*지
- 작성일 :
- 2012-06-15 16:30:55
- 조회수 :
- 1,963
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
전자정부 프레임웍 2.0에서 new > egov web project로 제네레이트 다 받아서
생성한후 톰캣 연결해서 돌리기만 하면(DB가동후) sampleList가 나오지 않습니까?
여기서..제가 따로 axis웹서비스를 구현하려고 클래스를 하나 생성해서..
public class EgovSampleAxis {
private static EgovSampleService sampleService =
new EgovSampleServiceImpl();
public int selectSampleCount(SampleVO vo) throws Exception{
return sampleService.selectSampleCount(vo);
}
}
이런식으로 클래스 하나 생성후 기존에 만들어진 컨트롤러에서
EgovSampleAxis axis = new EgovSampleAxis();
axis.selectSampleCount( sampleVO) );
위와 같이 호출할려고 하니 service단까진 가는데 impl에서 호출하는 dao부분이
nullpointer 오류가 납니다. 기존 spring에선 저방식이 잘되었는데 전자정부에선
잘안되네요. 아시다시피 제네레이트로 웹프로젝트 생성해서 다른 소스 한부분도
건드린 부분이 없고 EgovSampleAxis란 클래스 새로 생성후 컨트롤러에서
저런식으로 호출하는 거 빼곤 소스 건든곳이 없습니다. 왜그런지 궁금하네요.
생성한후 톰캣 연결해서 돌리기만 하면(DB가동후) sampleList가 나오지 않습니까?
여기서..제가 따로 axis웹서비스를 구현하려고 클래스를 하나 생성해서..
public class EgovSampleAxis {
private static EgovSampleService sampleService =
new EgovSampleServiceImpl();
public int selectSampleCount(SampleVO vo) throws Exception{
return sampleService.selectSampleCount(vo);
}
}
이런식으로 클래스 하나 생성후 기존에 만들어진 컨트롤러에서
EgovSampleAxis axis = new EgovSampleAxis();
axis.selectSampleCount( sampleVO) );
위와 같이 호출할려고 하니 service단까진 가는데 impl에서 호출하는 dao부분이
nullpointer 오류가 납니다. 기존 spring에선 저방식이 잘되었는데 전자정부에선
잘안되네요. 아시다시피 제네레이트로 웹프로젝트 생성해서 다른 소스 한부분도
건드린 부분이 없고 EgovSampleAxis란 클래스 새로 생성후 컨트롤러에서
저런식으로 호출하는 거 빼곤 소스 건든곳이 없습니다. 왜그런지 궁금하네요.
A
안녕하세요.. 박웅지님..
EgovSampleServiceImpl는 Spring bean이기 때문에.. new를 통해서 호출하실 수 없습니다.
이유는 Spring container에 의해 관리되는 bean이 아닌 클래스이기 때문에.. DI(Dependency Injection)이 처리되지 않습니다.
Nullponter Exception이 발생한 것도.. @Resource로 지정된 DAO가 injection되지 않았기 때문입니다.
이 상황은.. 표준프레임워크 자체 방식이 아닌 Spring framework 부분입니다. (Spring에서도 동일하게 동작)
ServiceImpl을 호출하시는 방법은.. @Controller를 통해 호출하시거나 ApplicationContext를 직접 관리하여 getBean()을 통해 ServiceImpl을 가져오셔서 호출하셔야 합니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
EgovSampleServiceImpl는 Spring bean이기 때문에.. new를 통해서 호출하실 수 없습니다.
이유는 Spring container에 의해 관리되는 bean이 아닌 클래스이기 때문에.. DI(Dependency Injection)이 처리되지 않습니다.
Nullponter Exception이 발생한 것도.. @Resource로 지정된 DAO가 injection되지 않았기 때문입니다.
이 상황은.. 표준프레임워크 자체 방식이 아닌 Spring framework 부분입니다. (Spring에서도 동일하게 동작)
ServiceImpl을 호출하시는 방법은.. @Controller를 통해 호출하시거나 ApplicationContext를 직접 관리하여 getBean()을 통해 ServiceImpl을 가져오셔서 호출하셔야 합니다.
그럼.. 즐거운 하루되십시오.
감사합니다.