티스토리 뷰

It

Dependency Injection 3-3 Dependency Injection

worknettwo 2022. 10. 24. 21:27

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.11.06
양보다 질, 질보다 양  (0) 2022.10.26
오라클 뷰 VIEW  (0) 2022.10.22
mysql 관리툴 / HeidiSQL /MySQL Workbench / mysql GUI 툴  (0) 2022.10.20
영어 문법 전명구  (0) 2022.10.18
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함