UserDao 클래스를 인터페이스와 구현으로 분리해보자.
2번을 적용해보자.
UserDao
UserDaoJdbc
public interface UserDao {
void add(User user);
User get(String id);
List<User> getAll();
void deleteAll();
int getCount();
}
<aside> 🔑
setDataSource() 메서드는 인터페이스에 추가하면 안된다.
</aside>
public class UserDaoJdbc implements UserDao{ ... }
→ userDao 이름으로 빈 등록
: 구현 인터페이스 이름을 따르는 경우가 일반적이다.
구현 클래스를 나중에 바꿔도 혼란이 없기 때문
테스트 클래스 실행 이슈