티스토리 뷰
의존 객체 : 특정 작업을 수행할 때 필요한 객체. 예를 들어, DB로부터 값을 가지고 올 때 필요한 DAO를 말한다.
이러한 관계를 Dependency라고 한다.
의존 객체를 관리하는 세 가지 방법
1. 사용하는 곳에서 직접 생성
public void deGet(HttpServletRequest request, HttpServletReponse response)
throws ServletException, IOException{
try{
ServletContext sc = this.getServletContext();
Connection conn = (Connection)sc.getAttribute("conn");
//DAO 객체 직접 생성
MemberDao memberdao = new MemberDao();
memberdao.setConnection(conn);
request.setAttribute("members", memberDao.selectList());
}
catch(){
}
}
}
2. 의존 객체를 미리 생성해두고 필요할 때 사용
pool처럼 만들어 놓고 가져다 사용하는 방식. 그러나 이렇게 되면 의존 객체를 보관하는 객체와 사용하는 객체 사이의 결합도가 높아진다. 또한 의존 객체를 다른 객체로 대체하기 어렵다.
public void deGet(HttpServletRequest request, HttpServletReponse response)
throws ServletException, IOException{
try{
ServletContext sc = this.getServletContext();
MemberDao memberdao = (MemberDao)sc.getAttribute("memberDao");
memberdao.setConnection(conn);
request.setAttribute("members", memberDao.selectList());
}
catch(){
}
}
}
3. 외부에서 주입
의존 객체를 전문으로 관리하는 빈 컨테이너 (Java Beans Container)가 등장한다. 빈 컨테이너는 객체가 실행되기 전에 필요로 하는 의존 객체를 외부에서 주입해준다.
이 방법을 Dependency Injection 방식이라고 한다. 좀 더 일반적인 말로 역제어 (IoC; Inversion of Control)이라고 한다. IoC 중 하나가 DI이다.
public void contextInitialized(ServletContextEvent event)
try{
ServletContext sc = event.getServletContext();
InitialContext initialContext = new InitialContext();
DataSource ds = (DataSource)initialContext.lookup("java:comp/env/jdbc/mydb");
MemberDao memberdao = new MemberDao();
memberdao.setDataSource(ds);
}
catch(){
}
}
말 그대로 해당 객체 내에서가 아니라 외부에서 생성을 해서 주입해주는 방식인 것 같다.
'Java' 카테고리의 다른 글
| static method 는 언제 써야할까 (0) | 2020.09.29 |
|---|---|
| Refactoring 참고 링크 모음 (0) | 2020.09.09 |
| valueOf (0) | 2020.08.25 |
| 클래스 멤버 (0) | 2020.05.29 |
| 배열 (0) | 2020.05.29 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- WebClient
- 메모리 릭
- 실용주의
- ActiveAdmin
- fetchResults
- sort algorithm
- querydsl
- Spring-Boot
- ASCII
- aws
- 이펙티브자바
- DesignSystem
- Lombok
- gitignore
- Git
- 사고..
- TroubleShooting
- Encoding
- effective-java
- SHA
- ruby
- annotation
- Java
- 코테 log
- point
- 암호화
- SQL 전문가 가이드
- IntelliJ
- 이벤트스토밍
- Generic
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함