로그인 샘플 소스를 받았는데

로그인 서비스를 처리하는 클래스를 그냥 만든게 아니라

인터페이스를 상속시켜 구현해놨더라구

그리고 컨트롤러에서 인터페이스를 통해 메소드를 접근하는 형태고.

어차피 로그인 기능은 다른 부분에서 사용되는 것도 아니고 하나만 있으면 되는데

굳이 인터페이스를 정의하고 그걸 상속 시킨 클래스를 만든다음에

컨트롤러에서 구현객체에 바로 접근하지 않고 인터페이스를 통해 접근해야할 이유가 있을까?


소스로 설명하자면

interface LoginService {
    public User getUser(String id, String pw);
}

class LoginServiceImpl implements LoginService {
    @Override
    public User getUser(String id, String pw) {
        // DB에서 유저정보 가져옴
    }
}

-------------------------------------------------

class LoginController {
    @Autowired
    private LoginService loginService

    @RequestMapping(...)
    public ModelAndView login(String id, String pw) {
        User user = loginService.getUser(id, pw);
        ....
    }
}