3. 스프링 DI
3-1. 의존
- DI(Dependency Injection) : 의존 주입
- 의존 : 객체간의 의존을 의미 (Service클래스가 Dao클래스에 의존한다)
1-1. MemberService가 memberDao에 의존하는 코드
- 의존하는 객체를 직접 생성하는 방식
public class MemberService {
private MemberDao memberDao = new MemberDao();
}
1-2. 문제점
// 의존하는 MemberDao의 객체도 함께 생성된다.
MemberService memberService = new MemberService();
2-1. DI를 통한 의존 처리
- 의존하는 객체를 전달받아 사용하는 방식
public class MemberService {
private MemberDao memberDao;
public MemberService(MemberDao memberDao){
this.memberDao = memberDao;
}
}
- 의존 주입 대상이 되는 객체를 생성하는 코드 한 곳만 변경하면 됨
3-2. 객체 조립기 : 한 곳 변경점을 생성하는 곳
- /assembler/Assembler.java 생성해서 조립해 볼 수 있다. → Assembler를 통해 사용할 조립품을 가져와 사용한다.
// 의존 객체를 변경하려면 조립기의 코드만 수정하면 된다.
public Assembler() {
memberDao = **new CachedMemberDao(); // 이 부분만 수정하면 됨!**
regSvc = new MemberRegisterService(memberDao);
pwdSvc = new ChangePasswordService();
pwdSvc.setMemberDao(memberDao);
}
- 하지만, 스프링 사용시 만들지 않음. 왜냐? → 스프링이 DI를 지원하는 조립기이기 때문이다.
3-3. 스프링을 이용한 객체 조립 - DI 방식
- 생성자 방식
- 세터 메서드 방식
- 필드 주입 방식
'공부 > Spring' 카테고리의 다른 글
[chap5] 컴포넌트 스캔 (0) | 2022.05.20 |
---|---|
[chap4] 의존 자동 주입 (0) | 2022.05.20 |
[chap2] 스프링 (0) | 2022.05.20 |
JdbcTemplate를 사용하는 이유 (3) | 2022.05.08 |
[Spring] DTO의 사용 범위 (0) | 2022.05.07 |
댓글