web developer

[spring] Spring IOC, IOC Container ,DI 의미 본문

Framework/Spring [java]

[spring] Spring IOC, IOC Container ,DI 의미

trueman 2021. 12. 23. 20:36
728x90
728x90

1. IoC(Inversion of Control)

객체를 생성하고, 관계를 맺는 등의 역할은 모두 프레임워크가 다 해준다. 개발자는 로직에만 집중하면 되는 것이다. 이것을 프로그램의 흐름 즉, 제어가 개발자 → 프레임워크로 넘어갔다고 하여, 제어의 역전이라고 부른다.


2. IOC Container 

IoC Container는 오브젝트의 생성과 관계설정, 사용, 제거 등의 작업을 대신 해준다하여 붙여진 이름이다. 이때, IoC Container에 의해 관리되는 오브젝트들은 Bean 이라고 부른다.

IoC Container는 Bean을 저장한다고 하여, BeanFactory 라고도 불린다. BeanFactory는 하나의 인터페이스이며, Application Context는 BeanFactory의 구현체를 상속받고 있는 인터페이스이다. 실제로 스프링에서 IoC Container 라고 불리는 것은 Application Context의 구현체이다.


3. DI(Dependency Injection)

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

- 개발자들은 단지 빈 설정파일에서 의존관계가 필요하다는 정보를 추가하면 된다.

- 객체 레퍼런스를 컨테이너로부터 주입 받아서 실행 시에 동적으로 의존관계가 생성된다.

- 컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해 주는 것이다.


 * DI의 유형

2-1. Setter Injection ( Setter 메서드를 이용한 의존성 삽입 )

의존성을 입력받는 setter 메서드를 만들고 이를 통해 의존성을 주입한다.

2-2. Constructor Injection ( 생성자를 이용한 의존성 삽입 )

필요한 의존성을 포함하는 클래스의 생성자를 만들고 이를 통해 의존성을 주입한다.

2-3. Method Injection ( 일반 메서드를 시용한 의존성 삽입 )

의존성을 입력받는 일반 메서드를 만들고 이를 통해 의존성을 주입한다.

 

728x90
728x90

'Framework > Spring [java]' 카테고리의 다른 글

스프링 MVC 구조와 패턴  (2) 2022.11.06
[java] @RequestBody , @ResponseBody 어노테이션  (2) 2022.03.04
[spring] web.xml  (0) 2021.12.23
[spring] root-context.xml  (0) 2021.12.23
[spring] servlet-context.xml  (0) 2021.12.23
Comments