코드짜는 노인네

[Spring] DI(Dependency Injection), IoC(Inversion of Control), Bean 개념 간단히 정리 본문

spring

[Spring] DI(Dependency Injection), IoC(Inversion of Control), Bean 개념 간단히 정리

ikohong 2022. 7. 21. 11:44
728x90
반응형

[Spring] 

DI(Dependency Injection), IoC(Inversion of Control), Bean 개념 간단히 정리


▶ IoC(Inversion of Control) - '대신 해준다'는 뜻

 

'Inversion of Control 을 한글로 번역하면 '제어 역전'이라는 의미를 가지고 있습니다. 기존에 객체를 만들려면 다음과 같은 순서로 진행을 했습니다.

1. 객체 생성 → 2. 의존성 객체 생성 (클래스 내부) → 3. 의존성 객체 메소드 호출

 

허나 IoC는 직접적으로 의존성을 만들지 않고, 외부에서 의존성을 가져오는 경우입니다. 

1. 객체 생성 → 2. 의존성 객체 주입 (제어권을 스프링에게 위임하여 스프링이 만들어놓은 객체를 주입) → 3. 의존성 객체 메소드 호출
▶ DI(Dependency Injection) - '대신 넣어준다.'는 뜻

 

외부에서 의존성을 주입해주는것을 DI(Dependency Injection) 이라 합니다. 위에서 언급했던 IoC의 일종이라 생각할 수 있는데요. 개발자가 Bean 설정파일에 의존관계가 필요한 정보를 추가해주면서 각 객체간의 의존성을 컨테이너가 자동으로 연결해줍니다. 

스프링 컨테이너
> 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할.
> 자바 객체를 스프링에서는 Bean 이라고 부름.
반응형
▶ Bean (Java Bean, Spring Bean)
Java Bean
Java Bean 규약에 맞춰서 만들어진 클래스를 의미
※ Java Bean 규약
- 기본생성자가 존재
- 모든 멤버변수의 접근제어자는 private
- 멤버변수마다 getter/setter 가 존재
- 외부에서 멤버변수에 접근하기 위해서는 메소드로만 접근 가능
- Serializable (직렬화)가 가능
Spring Bean

 

Spring Bean은 Spring IoC 컨테이너가 관리하는 자바의 객체를 이야기합니다.

Spring은 뷰 영역에 데이터를 출력하고 싶을 때 Java Bean 규약에 맞춰 만들어진 객체를 사용하고, 객체들을 외부 저장소에 저장하고 전송할 때 사용한다.

참고 자료
- [Spring] 스프링 컨테이너와 빈이란?
- 스프링 빈(Spring Bean)이란? 개념 정리
- [Spring] 스프링 의존성 주입(DI) 이란?
- [Spring] 예제로 배워보는 IoC/DI & Spring Bean Life Cycle
728x90
반응형
Comments