티스토리 뷰
3-3 (Dependency Injection) - Dependency Injection
개념
각 Bean 사이의 의존관계 설정을 XML 설정파일에 등록된 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
컨테이너가 Bean에 필요한 객체를 넘겨줘서 사용함.
Constructor Injection, Setter Injection
장점
프레임워크에 독립적인 코드 작성 가능
Dependency 변경시에 프로그램 코드를 수정하지 않고도 XML 설정 파일의 수정만으로 변경 사항 적용 가능
단점
Spring 내부에 등록된 Bean 끼리만 의존성 설정 가능
Constructor Injection
Spring은 기본적으로 기본 생성자(Default Constructor)를 이용해 객체를 생성함. 하지만…
생성자의 매개변수로 Dependency 설정 내용을 넘겨주는 방법
매개변수가 있는 생성자 필요
public class UserServiceImpl implements UserService {
private UserDAO userDAO;
public UserServiceImpl(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
<bean id="userService" class="com.multicampus.biz.user.impl.UserServiceImpl">
<constructor-arg ref="userDAO" />
</bean>
<bean id="userDAO" class="com.multicampus.biz.user.impl.UserDAO" />
매개변수 Type 매핑
public class UserVO {
private String userName;
private int age;
public UserVO(String userName, int age) {
this.userName = userName;
this.age = age;
}
}
<bean id="userVO" class="com.multicampus.biz.user.vo.UserVO">
<constructor-arg index="0" value="홍길동" />
<constructor-arg index="1" value="17" />
</bean>
Setter Injection
Bean이 가지고 있는 Setter 메서드를 호출하여 Dependency 주입함.
public class UserServiceImpl implements UserService {
private UserDAO userDAO;
public void setUserDAO(UserDAO userDAO) {
System.out.println("setUserDAO() 메소드 호출");
this.userDAO = userDAO;
}
}
<bean id="userService" class="com.multicampus.biz.user.impl.UserServiceImpl">
<property name="userDAO" ref="userDAO" />
</bean>
<bean id="userDAO" class="com.multicampus.biz.user.impl.UserDAO" />
집합 객체 설정
List, Map 과 같은 Collection 객체를 주입할 수 있음.
List 타입 매핑
public class CollectionBean {
private List<String> addressList;
public void setAddressList(List<String> addressList){
this.addressList = addressList;
}
}
<bean id="collectionBean" class="com.multicampus.ioc.injection.CollectionBean">
<property name="addressList">
<list>
<value>서울시 강남구 역삼동</value>
<value>서울시 성동구 성수동</value>
</list>
</property>
</bean>
Map 타입 매핑
public class HandlerMapping {
private Map<String, Controller> mappings;
public void setMappings(Map<String, Controller> mappings){
this.mappings = mappings;
}
}
<bean id="handlerMapping" class="com.multicampus.ioc.injection.HandlerMapping">
<property name="mappings">
<map>
<entry>
<key><value>login</value></key>
<ref bean="loginController"/>
</entry>
<entry>
<key><value>logout</value></key>
<ref bean="logoutController"/>
</entry>
</map>
</property>
</bean>
<bean id="loinController" class="com.multicampus.system.LoginController" />
<bean id="logoutController" class="com.multicampus.system.LogoutController /">
'It' 카테고리의 다른 글
명령어 세트 (0) | 2022.08.16 |
---|---|
명령어 파이프라이닝 (0) | 2022.08.16 |
명령어 실행 (0) | 2022.08.16 |
Spring AOP 4-1 AOP (0) | 2022.08.15 |
Dependency Injection 3-4 Annotation 기반 설정 (0) | 2022.08.15 |
- Total
- Today
- Yesterday
- 하나님의 마음 토렌트
- 하나님의 마음 예고편
- 실검
- 러브 라이프 정식자막
- 하나님의 마음 정식자막
- 추천영화
- 영화
- 하나님의 마음 무료보기
- 하나님의 마음 한글자막
- 러브 라이프 한글자막
- 오늘의사건
- 하나님의 마음 바로보기
- 옛날영화
- 하나님의 마음 마그넷
- 러브 라이프 다운로드
- Movie
- 실시간검색어
- 러브 라이프 무료보기
- 한국영화
- 하나님의 마음 고화질
- 영화추천
- 러브 라이프 예고편
- 영화순위
- 박스오피스
- 하나님의 마음 다시보기
- 영화소개
- 러브 라이프 토렌트
- 오늘의이슈
- 하나님의 마음 다운로드
- 외국영화
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |