인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

asd님의 프로필 이미지
asd

작성한 질문수

[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]

@Mapper 어노테이션

작성

·

412

0

선생님 궁금한점이 있습니다!!

MemberMapper 인터페이스를 만들어서 @Mapper 어노테이션을 붙였는데

이는 스프링이 스캔할때 이 MemberMapper의 객체를 만들기 위해서 붙인거라고 알고있습니다.

그래야 이제 MemberController에서 @Autowired로 memberMapper 변수에 DI를 해줄수 있기 때문입니다.

근데 어떻게 인터페이스가 객체로 생성이 되는건가요? 아니면 제가 놓친 부분이 있을까요?

답변 1

1

박매일님의 프로필 이미지
박매일
지식공유자

어떻게 인터페이스가 객체로 생성이 되는건가요?
-> 그쵸 인터페이스는 객체 생성을 할 수 없죠~
MemberMapper 인터페이스와 mybatis-sparing에서 제공해주는 SqlSessionFactoryBean이라는
클래스가 스프링 내부에 서로 연결 된다고 생각하시면 됩니다.

예를 들면 아래처럼 MemberMapper인터페이스의 구현체가 SqlSessionFactoryBean이라고 보면되는데 
public class SqlSessionFactoryBean implements MemberMapper{

}
이것처럼 내부에 구현이 된다고 생각하시면 될듯합니다.
그래서
MemberMapper 인터페이스만 있어도 SqlSessionFactoryBean내부의 메서드를 이용할 수가 있는 원리입니다.(상속관계에서 부모 클래스(MemberMapper)만 있으면 하위클래스(SqlSessionFactoryBean) 를 이용해서 동작을 시킬수있는 원리)

스프링은 내부에서 이루어지는 일이 많아서 이해하기 어려운 부분도 있습니다.
조금 이해가 되셨을까요?

asd님의 프로필 이미지
asd

작성한 질문수

질문하기