autowired 관련하여 질문이 있습니다ㅠㅠ
- 작성자 :
- 문*은
- 작성일 :
- 2017-04-26 10:24:28
- 조회수 :
- 1,679
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
현재 저의 소스 구조는 첨부파일에 첨부한 이미지와 같습니다.
메이븐 다중모듈 프로젝트로 프로젝트를 생성하였으며
web 프로젝트에 컨트롤러가 있고,
core 프로젝트에 service와 mapper 등이 존재하게 됩니다.
컨트롤러에서 autowired를 써서 core에 있는 서비스로 넘어가는 것 까지는 확인을 했는데요
다음 문제는 서비스에서 mapper를 선언했을때 입니다.
서비스 소스입니다.
@Service
public class MemberService {
@Autowired(required=false)
private MemberMapper memberMapper;
public List<MemberBean> selectMemberList() throws Exception {
System.out.println("test!!!!");
return memberMapper.selectMemberList();
}
}
mapper interface 소스입니다.
@MapperScan
public interface MemberMapper {
public List<MemberBean> selectMemberList();
}
mapper.xml 파일 소스입니다.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.****.board.web.mapper.MemberMapper">
<select id="selectMemberList" resultType="memberBean">
SELECT * FROM com_member
</select>
</mapper>
memberBean(VO개념으로 클래스를 만들었습니다.)
@Alias("memberBean")
public class MemberBean {
위에 이런식으로 선언하여 memberBean을 설정했습니다.
이렇게 해서 서비스에서 mapper를 호출하여 select를 하고싶은데
어떤 설정이 잘못되었는지 궁금합니다.
서비스에서
@Autowired(required=false) 로 써준 이유는 bean을 찾지 못해도
에러가 나지 않는다고 하여 설정했는데..
저렇게 쓰지 않고 @Autowired로만 써 줄 경우에는,
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.****.board.web.mapper.MemberMapper com.*****.board.web.module.MemberService.memberMapper; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.****.board.web.mapper.MemberMapper] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
위와 같은 에러가 발생합니다. ㅠㅠ
제가 확인을 해야 할 부분을 알려주시면 정말 감사하겠습니다.
이 에러에서 벌써 며칠 째 ㅠㅠ 헤매고 있습니다 ㅠㅠ
메이븐 다중모듈 프로젝트로 프로젝트를 생성하였으며
web 프로젝트에 컨트롤러가 있고,
core 프로젝트에 service와 mapper 등이 존재하게 됩니다.
컨트롤러에서 autowired를 써서 core에 있는 서비스로 넘어가는 것 까지는 확인을 했는데요
다음 문제는 서비스에서 mapper를 선언했을때 입니다.
서비스 소스입니다.
@Service
public class MemberService {
@Autowired(required=false)
private MemberMapper memberMapper;
public List<MemberBean> selectMemberList() throws Exception {
System.out.println("test!!!!");
return memberMapper.selectMemberList();
}
}
mapper interface 소스입니다.
@MapperScan
public interface MemberMapper {
public List<MemberBean> selectMemberList();
}
mapper.xml 파일 소스입니다.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.****.board.web.mapper.MemberMapper">
<select id="selectMemberList" resultType="memberBean">
SELECT * FROM com_member
</select>
</mapper>
memberBean(VO개념으로 클래스를 만들었습니다.)
@Alias("memberBean")
public class MemberBean {
위에 이런식으로 선언하여 memberBean을 설정했습니다.
이렇게 해서 서비스에서 mapper를 호출하여 select를 하고싶은데
어떤 설정이 잘못되었는지 궁금합니다.
서비스에서
@Autowired(required=false) 로 써준 이유는 bean을 찾지 못해도
에러가 나지 않는다고 하여 설정했는데..
저렇게 쓰지 않고 @Autowired로만 써 줄 경우에는,
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.****.board.web.mapper.MemberMapper com.*****.board.web.module.MemberService.memberMapper; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.****.board.web.mapper.MemberMapper] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
위와 같은 에러가 발생합니다. ㅠㅠ
제가 확인을 해야 할 부분을 알려주시면 정말 감사하겠습니다.
이 에러에서 벌써 며칠 째 ㅠㅠ 헤매고 있습니다 ㅠㅠ
A
안녕하세요.
표준프레임워크 센터 입니다.
board.web.mapper.MemberMapper을 autowired 과정에서 에러가 나는거 같습니다.
올려주신 내역만으로는 진단 하는게 한계가 있습니다.
센터에서 제공하는 교육교재애 mybatis 샘플 구조화 작업중인 소스의 구조를 비교하시면 도움이 될꺼 같습니다.
감사합니다.
표준프레임워크 센터 입니다.
board.web.mapper.MemberMapper을 autowired 과정에서 에러가 나는거 같습니다.
올려주신 내역만으로는 진단 하는게 한계가 있습니다.
센터에서 제공하는 교육교재애 mybatis 샘플 구조화 작업중인 소스의 구조를 비교하시면 도움이 될꺼 같습니다.
감사합니다.