마크로즘
185
2018-04-30 14:45:17 작성 2018-04-30 14:46:23 수정됨
8
1181

스프링에서 인터페이스 질문입니다.


public interface MemberService {
     public String insertMember(MemberVO member) throws Exception;
}


인터페이스가 위와같이 정의되었고요


Controller에서
private MemberService service;
로 선언하고
service.insertMember();
로 사용했거든요


그런데 아래 구현된 insertMember(); 를 사용하더라고요
------------------------
public class MemberServiceImpl implements MemberService{
     return dao.insertMember();
}


이게 왜 바로 되는거지요?

몇몇분이 인터페이스에서는 정의만 되는것이기 때문에 당연하다고 말씀하시는데

interface 가 정의만 된것이기때문에 자동으로 구현체 메소드를 가져오는 것이라면

구현체가 여럿일경우 어떤 구현체의 메소드를 실행해야 되나요?


그래서 전 spring에서 자동으로 매칭시켜주는건가 싶어서요...

답변 부탁 드립니다.


0
0
  • 답변 8

  • LichKing
    14k
    2018-04-30 14:54:55
    스프링 컨테이너가 올라가면서 빈을 주입하는데 그때 구현체를 집어넣습니다. 구현체를 집어넣는 규칙은 몇가지가 있는데 필드위에 애노테이션같은게 붙어있을것같네요. 가령 @Autowired나 @Qualifer 같은.. 아님 생성자가 있거나..


    1
  • 마크로즘
    185
    2018-04-30 14:57:19

    @LichKing 님 감사합니다. 그게 @Inject 인가요?

    0
  • LichKing
    14k
    2018-04-30 15:03:37

    @Inject가 달려있나요?

    @Inject 애노테이션도 의존성 주입해주는 애노테이션입니다. @Autowired는 스프링꺼고 @Inject는 자바스펙인데 그건 나중에 공부하시면되고, 걔가 달려있어서 구현체를 넣어주고있다고 이해하심돼요. 그거 지우고 서버올리면 서버 안올라갈거에요. 한번 해보세요.


    1
  • 마크로즘
    185
    2018-04-30 15:10:00

    @LichKing 님 감사합니다. 지우니깐 그냥 에러가 나더라고요

    그거 일거같아서 오픈채팅방에 물어봐도 누가 대답을 안해줘서 여기에 물어봤습니다.

    감사합니다.

    0
  • 마크로즘
    185
    2018-04-30 15:10:55

    spring에서 뭔가를 해줘서 그런줄 알았는데 JAVA 스콥의 기능을 쓴거네요.. 감사합니다.

    0
  • LichKing
    14k
    2018-04-30 15:22:06

    음... 자바 스콥 기능이 뭔지는 잘 모르겠는데...

    스프링이 아니라 다른쪽에서 해준다는 말씀인가요?


    0
  • 마크로즘
    185
    2018-04-30 15:25:23

    @LichKing "@Inject는 자바스펙인데 그건 나중에 공부하시면되고,"  이렇게 말씀하셔서요..


    0
  • javaing
    1k
    2018-05-02 05:04:47

    javax를 지칭하신것 같네요

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.