반응형

IoC의 개념

IoC(제어권의 역전)이란, 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다.

컴포넌트 의존 관계 결정, 설정 및 생명주기를 해결하기 위한 디자인 패턴

자주 사용하는 객체는 미리 메모리에 올려놓아 효율성을 올리는 방식이다. 스프링 컨테이너가 IoC를 구현한다.

 

 

IoC컨테이너

스프링 프레임워크도 객체에 대한 생성 및 생명주기를 관리할 수 있는 기능을 제공하고 있음, 즉, IoC컨테이너 기능을 제공한다. 

  • IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다.
  • POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.
  • 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다.

 

IoC분류

DL(Dependency Lookup) 의존성 검색 

저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lookup 하는 것

 

DI(Dependency Injection) 의존성 주입

각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것

 

Spring Toll Suite4 생성

life-with-coding.tistory.com/369

 

[STS] Spring Tool Suite4에서 Legacy Project 생성

인트로 STS4(Spring Tools Suite4)에 Spring Legacy Project를 띄우기 위해서는 STS3이 필요합니다. STS4에서는 Legacy Project를 지원하지 않기 때문에 별도로 설치해주어야합니다. Spring Legacy Project(Sprin..

life-with-coding.tistory.com

실습예제

 

 

 

src/main/resources/spring-context.xml 코드

bean 부분 중요

<?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.xsd">

	<bean id="helloDAO" class="kr.co.acomp.hello.HelloDAO"></bean>
</beans>

 

src/main/java

->kr.co.acomp.hello

-->HelloDAO.java

package kr.co.acomp.hello;

public class HelloDAO {
	
	public int addTwoNumber(int a, int b){
		return a+b;
	}

}

src/main/java

->kr.co.acomp.hello

-->HelloMain.java

package kr.co.acomp.hello;

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

public class HelloMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//HelloDAO dao = new HelloDAO();
		//int result =- dao.addTwoNumber(3, 5);
		
		//DI 문법
		AbstractApplicationContext ctx =
				new ClassPathXmlApplicationContext("/spring-context.xml");
		HelloDAO dao = ctx.getBean("helloDAO",HelloDAO.class);
		int result = dao.addTwoNumber(5,67);
		System.out.println(result);
	}

}
반응형

+ Recent posts