[재질문]서버 스타트시 Property 'sqlMapClient' is required 라는 오류가 납니다.
- 작성자 :
- 송*현
- 작성일 :
- 2010-12-16 14:23:06
- 조회수 :
- 2,490
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
답변해 주신 내용 잘 봤습니다.
추가적인 사항이 있는데요..
전자정부프레임워크내에 EgovAbstractDAO 클래스를 보면 이 클래스도
SqlMapClientDaoSupport 클래스를 상속 받아 구현하는 형태로 되어 있더군요..
프로젝트에서는 EgovAbstractDAO 클래스를 상속받아서 쓰구요..
근데 SqlMapClientDaoSupport 클래스를 보면
@Resource(name = "sqlMapClient")
부분은 명시가 안되어 있습니다.
꼭 필수적인 사항은 아닌지요?
그리고
public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
super.setSqlMapClient(sqlMapClient);
}
처럼 Super라는 명칭이 붙어있어도 자동으로 셋팅이 되어 DI 되는지 궁금합니다.
추가적인 사항이 있는데요..
전자정부프레임워크내에 EgovAbstractDAO 클래스를 보면 이 클래스도
SqlMapClientDaoSupport 클래스를 상속 받아 구현하는 형태로 되어 있더군요..
프로젝트에서는 EgovAbstractDAO 클래스를 상속받아서 쓰구요..
근데 SqlMapClientDaoSupport 클래스를 보면
@Resource(name = "sqlMapClient")
부분은 명시가 안되어 있습니다.
꼭 필수적인 사항은 아닌지요?
그리고
public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
super.setSqlMapClient(sqlMapClient);
}
처럼 Super라는 명칭이 붙어있어도 자동으로 셋팅이 되어 DI 되는지 궁금합니다.
A
안녕하세요.. 송두현님..
SqlMapClientDaoSupport에는 @Resource와 같으 것으로 injection이 되어 있지 않습니다.
이를 extends 하는 하위 클래스에서 @Resource 등을 통해 injection하시도록 되어 있습니다. (@Resouce가 아니더라고 @Autowired 또는 XML 설정으로 가능)
EgovAbstractDAO의 경우는 모든 DAO에서 @Resource 등으로 injection을 해주는 부분을 공통으로 처리하실 수 있도록 제공해 드리는 것입니다.
즉.. 기존 방식처럼 모든 DAO가 EgovAbstractDAO를 상속하면 sqlMapClient라는 이름으로 injection이 자동(정확하게 말씀드리면 아니지만..)으로 되는 것입니다.
이것을 SqlMapClientDaoSupport를 직접 상속하도록 변경하셨기 때문에 EgovAbstractDAO가 해주었던 역할 중 @Resource를 통한 injection을 직접 지정하셔여 하는 것입니다.
필수여부에 대한 질문인 @Resource 사용은 필수입니다.
이전 질문에서 이 지정이 없었기 때문에 오류가 발생한 것입니다.
마지막은 super는 DI와는 상관이 없이.. 상위 클래스의 setSqlMapClient 메소드를 호출한 것입니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
SqlMapClientDaoSupport에는 @Resource와 같으 것으로 injection이 되어 있지 않습니다.
이를 extends 하는 하위 클래스에서 @Resource 등을 통해 injection하시도록 되어 있습니다. (@Resouce가 아니더라고 @Autowired 또는 XML 설정으로 가능)
EgovAbstractDAO의 경우는 모든 DAO에서 @Resource 등으로 injection을 해주는 부분을 공통으로 처리하실 수 있도록 제공해 드리는 것입니다.
즉.. 기존 방식처럼 모든 DAO가 EgovAbstractDAO를 상속하면 sqlMapClient라는 이름으로 injection이 자동(정확하게 말씀드리면 아니지만..)으로 되는 것입니다.
이것을 SqlMapClientDaoSupport를 직접 상속하도록 변경하셨기 때문에 EgovAbstractDAO가 해주었던 역할 중 @Resource를 통한 injection을 직접 지정하셔여 하는 것입니다.
필수여부에 대한 질문인 @Resource 사용은 필수입니다.
이전 질문에서 이 지정이 없었기 때문에 오류가 발생한 것입니다.
마지막은 super는 DI와는 상관이 없이.. 상위 클래스의 setSqlMapClient 메소드를 호출한 것입니다.
그럼.. 즐거운 하루되십시오.
감사합니다.