티스토리 뷰
1. DI (Dependency Injection) 란?
- OOP 프로그램에서, 다양한 디자인패턴(효율적인 프로그래밍 방법론) 중 한가지.
- 핵심적인 기능을 객체로 구현하여, 각 객체에 주입하는 방식.
1-1) DI를 이용하는 이유
- 객체 지향 프로그램에서는 각 객체가, 모든 프로그램에 구속되어 유지 보수가 어려울 경우를 배제하기 위한 방법으로 프로그램을 구성한다.
- 즉, 인터페이스를 이용하거나 객체를 독립화시켜, 프로그램의 확장을 용이하게 한다.
사진 1) 장난감 예시로 DI 이해하기
- 위의 장남감들은, 모두 배터리에 '의존'하고 있다, 이렇게, 배터리라는 핵심적인 기능을 만들어서, 모든 장난감이 움직일 수 있게 '주입'하는 것을 의존 주입(DI)이라고 한다.
- 효과적인 DI 방법은 배터리 분리형 처럼, 객체를 분리하여 개발하는게 유연성있고 좋은 프로그램이라고 할 수 있다.
예제 1) 코드로 DI 이해하기
- 배터리 일체형에서는, getter ,setter 메서드가 없기 때문에, 생성과 동시에 battery가 설정된 이후, 해당 변수를 변경할 수 없다.
- 배터리 분리형에서는 생성시에 battery를 설정할 수 있으며, 기본적으로 setter 메서드가 있기 때문에, 배터리 변수를 언제든지 변경할 수 있다.
- 일반적으로 생성과 동시에 객체에 값을 넣고, setter 메서드를 통해 언제든지 수정할 수 있게 하는 것을 선호한다.
즉, 만들어진 객체를 외부에서 따로 주입하여 사용하는 것을 DI라고 한다. (Java OOP의 다형성 개념과 비슷하다)
2. 스프링 DI 설정 방법
스프링 설정파일 (applicationContext.xml) 을 GenericApplicationContext라는 클래스를 이용하여
스프링 설정파일로 부터 Spring Container를 만들수 있음. Spring Container에는 많은 Bean 객체들이 존재함. 이 Bean 객체들은 스프링 설정파일에 bean태그를 이용하여 명시를 하고, 명시된 bean태그가 GenericApplicationContext라는 클래스를 통해 Spring Container안에 객체로 생성됨. 이렇게 생성이 된 객체를, 사용하고 싶을 때, getBean()를 통해 가져다 사용하면 됨. (이미 컨테이너에 생성되어 있기 때문에 new라는 키워드를 통해 객체를 생성하지 않아도 됨).
- 여기서 DI형태는 컨테이너에 만들어진 bean 객체중에 객체끼리 의존해 있는것을 말한다.
'Spring > 인프런 - Spring' 카테고리의 다른 글
3. 일반 Java프로젝트와 Spring 프로젝트의 차이 (0) | 2020.03.08 |
---|---|
2. 스프링 프로젝트 생성 (Spring) (0) | 2020.03.08 |
1. 스프링 개요 (0) | 2020.03.03 |
- 20200423
- 20200403
- 20200503
- 20201204
- 20200429
- 20200420
- 20200428
- 20200425
- 20200512
- 20200417
- 20200317
- 20200624
- 20200421
- chapter8
- 20200406
- 20200413
- 20200424
- 20200415
- 생활코딩리눅스
- 20200427
- 20200622
- 20200330
- 20200319
- 20200510
- 백준
- chapter7
- likelion
- 20200502
- 20200504
- 20200804
- Total
- Today
- Yesterday