티스토리 뷰
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 |
댓글