Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
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
Tags
more
Archives
Today
Total
관리 메뉴

WON.dev

01_DI.txt 본문

SPRING/chapter02_DI

01_DI.txt

GAWON 2023. 6. 26. 18:46
1. IoC(Inversion of Controll)
	1) '제어의 역전'이라는 의미이다.
	2) 모든 작업을 사용하는 쪽에서 제어하게 되면서 IoC컨테이너에서 제어하게 되는데,
		기본적으로 컨테이너는 객체를 생성하고 객체간의 의존성을 이어주는 역할을 한다.
	3) 기존 개발자가 객체를 생성하고 객체간의 의존관계를 직접 연결했으나,
		객체 생성부터 객체의 제어권을 외부 컨테이너로 넘긴것을 뜻한다.
	4) BeanFactory
		(1) IoC컨테이너 기능을 정의하는 인터페이스
		(2) Bean의 생성 및 의존성 주입, 생명주기 관리
			* Bean : IoC컨테이너에 의해 생성되고 관리되는 객체
	5) ApplicationContext
		(1) BeanFactory 인터페이스를 상속
		(2) ex) GenericXmlApplicationContext
			- xml에서 객체 설정 정보를 받아온다.
			- ApplicationContext를 이용한다.
			- 싱글톤 유지
		
		String configLocation ="classpath:applicationContext.xml";
		ApplicationContext ctx = new GenericXmlApplicationContext(configLocation);
		CarInfo ci = ctx.getBean("carInfo", CarInfo.class);


2. DI(Dependency Injection)지원
	1) IoC를 구현하는 방법 중 하나로 사전적 의미로 '의존성 주입'이라는 의미이다.
	2) 의존성이란 한 클래스에서 다른 클래스를 사용할 때 나타나는 현상이다.
	3) 크게 Setter 주입과 생성자 주입방식이 있다.
	4) 빈(bean)이라는 객체를 생성하고 사용한다.
	
		class Car {
		    Frame frame = new Frame();
		    Engine engine = new Engine();
		    Tire tire = new Tire();
		}	
	 
		class Frame {}
		class Engine {}
		class Tire {}
	
		- 위 코드처럼 자동차라는 클래스는 구조, 엔진, 타이어등의 객체를 통한 정상적인 기능이 가능하다
		- 이를 의존 관계라고 한다.
	
	5) 사용되는 다른 객체들을 생성자 or  Setter로 주입받아 사용하는 것을 의미한다.
		class Car {
		    Frame frame;
		    Engine engine;
		    Tire tire;
		    
		    public Car(Frame frame, Engine engine, Tire tire) {
		        this.frame = frame;
		        this.engine = engine;
		        this.tire = tire;
		    }
		    
		    or
		    
		    public void setFrame(Frame frame){
		    	this.frame = frame;
		    }
		    public void setEngine(Engine engine){
		    	this.engine = engine;
		    }
		    public void setTire(Tire tire){
		    	this.tire = tire;
		    }
		}