Spring IOC 와 DI 실현 원리 및 실례 분석

4579 단어 SpringIOCDI
스프링
Spring 은 IoC 와 AOP 를 내 핵 으로 하 는 프레임 이다.
IoC(Inversion of Control·반전 제어)는 스프링 의 기반 이다.
IoC 는 쉽게 말 하면 창설 대상 이 이전의 프로그래머 가 new 구조 방법 을 호출 하여 Spring 창설 대상 이 되 었 다 는 것 이다.
DI(Dependency Inject,주입 의존)는 IoC 의 의미 와 같 지만 이 두 호칭 은 두 가지 측면 에서 묘사 한 동일 한 개념 일 뿐이다.
쉽게 말 하면 DI 는 대상 의 속성 으로 이미 관련 값 이 주입 되 었 으 니 직접 사용 하면 된다.

IoC-반전 제어
  각 대상 류 를 봉 한 후,IoC 용 기 를 통 해 이러한 대상 류 를 연결 합 니 다.이렇게 대상 과 대상 간 에는 IoC 용 기 를 통 해 연결 되 는데 대상 과 대상 간 에는 직접적인 연관 이 없다.

  응용 프로그램 이 IoC 용 기 를 도입 하기 전에 대상 A 가 대상 B 에 의존 하면 A 대상 이 특정한 지점 으로 예화 되 거나 실 행 될 때 자신 이 대상 B 를 자발적으로 만 들 거나 이미 만 든 대상 B 를 사용 해 야 합 니 다.그 중에서 만 든 이미지 B 를 만 들 든 사용 하 든 제어 권 은 응용 프로그램 자체 에 있 습 니 다.
  응용 프로그램 이 Ioc 용 기 를 도입 한 후 대상 A 와 대상 B 간 에 직접적인 연락 이 끊 겼 기 때문에 대상 A 가 정례 화 되 고 실 행 될 때 대상 B 가 필요 하 다 면 IoC 용 기 는 대상 A 에 필요 한 곳 으로 대상 B 주입(즉 주입 의존)을 주동 적 으로 생 성 합 니 다.이 를 통 해 대상 A 가 의존 대상 B 를 획득 하 는 과정 이 능 동적 행위 에서 수 동적 행위 로 바 뀌 었 다.즉,창설 대상 을 IoC 용기 처리 에 맡 기 고 통제 권 이 뒤 바 뀐 것 이 이른바 통제 반전 이다.
DI-의존 주입
IoC 용기 가 작 동 하 는 동안 어떤 의존 관 계 를 대상 에 동적 으로 주입 합 니 다.예 를 들 어 대상 B 를 대상 A 의 구성원 변수 에 주입(할당)한다.
  사실은 주입(DI)과 제어 반전(IoC)에 의존 하 는 것 은 같은 일 에 대한 서로 다른 묘사 이다.어떤 면 에서 보면 그들 이 묘사 하 는 각도 가 다르다 는 것 이다.의존 주입 은 응용 프로그램의 측면 에서 설명 하 는 것 입 니 다.즉,응용 프로그램 은 용기 에 의존 하여 필요 한 외부 자원 을 만 들 고 주입 하 는 것 입 니 다.반전 을 제어 하 는 것 은 용기 의 측면 에서 설명 하 는 것 이다.즉,용기 제어 응용 프로그램 은 용기 에서 응용 프로그램 에 필요 한 외부 자원 을 역방향 으로 주입 하 는 것 이다.여기 서 말 하 는 외부 자원 은 외부 인 스 턴 스 대상 일 수도 있 고 외부 파일 대상 일 수도 있 습 니 다.
IoC 와 DI 의 실현
  (1)속성 setter 방법 주입:IoC 용기 가 setter 방법 으로 의존 하 는 인 스 턴 스 를 주입 하 는 것 을 말 합 니 다.무 참 구조 기 나 무 참 정태 공장 방법 을 호출 하여 빈 을 예화 한 후 이 빈 의 setter 방법 을 호출 하면 setter 방법 에 대한 의존 주입 을 실현 할 수 있다.이 방식 은 간단 하고 직관 적 이 며 이해 하기 쉬 워 스프링 의 설정 주입 이 대량으로 사용 된다.

package com.ssm.entry;

public class UserServiceImpl implements UserService {

	private UserDao userDao;
	
	// setter()      
	public void setUserDao(UserDao userDao){
		this.userDao = userDao;
	}
	
	public void login() {
		this.userDao.login();
		System.out.println("UserService login");
	}

}
  (2)구조 방법 주입:IoC 용기 사용 구조 방법 에 의존 하 는 인 스 턴 스 를 주입 하 는 것 을 말한다.구조 방법의 의존 주입 을 바탕 으로 파 라 메 터 를 호출 하 는 구조 방법 을 통 해 이 루어 지고 모든 파 라 메 터 는 하나의 의존 을 대표 한다.
applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    		http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
    		
    <!--        Spring, Spring              -->
		<bean id="UserDao" class="com.ssm.entry.UserDaoImpl"></bean>
		
		<!--     id userService Bean     -->
		<bean id="UserService" class="com.ssm.entry.UserServiceImpl">
			<!--  name UserDao Bean  UserService    -->
			<property name="UserDao" ref="UserDao"/>
		</bean>
</beans>
IoC 테스트

package com.ssm.entry;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class IoC {
	public static void main(String[] args) {
		
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserDao userDao = (UserDao)applicationContext.getBean("UserDao");
		userDao.login();
		
	}
}
DI 테스트

package com.ssm.entry;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DI {
	
	public static void main(String[] args) {
		ApplicationContext applicationContext = new 
				ClassPathXmlApplicationContext("applicationContext.xml");
		UserService userService = (UserService)applicationContext.getBean("UserService");
		userService.login();
	}
	
}
실체 류 및 인터페이스 실현 전략
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기