Spring IOC 와 DI 실현 원리 및 실례 분석
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();
}
}
실체 류 및 인터페이스 실현 전략이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.