JAVA/Spring

스프링의 주요 개념 : IoC, DI, Container, Bean

whyHbr 2024. 4. 14. 17:33
728x90
반응형

스프링의 주요 개념 (Core)

 

Ioc : Inversion of Control

Inversion : 정반대로 뒤집힘

Control : 제어, 프로그램의 흐름.

= 프로그램의 흐름을 제어하는 주체가 정반대로 뒤집힌다.

= 객체의 흐름(객체의 생성, 사용 등 라이프 사이클)을 제어하는 주체가 정반대로 됨. 

 

원래 객체 생성은 나, 사용자가 new Product(); 했었는데 이걸 스프링이 해준다. 

 

 

DI :Dependency Injection 의존성 주입

의존한다 = 사용한다 = 객체를 사용한다.  = 객체의 메소드, 필드를 사용한다. -> 사용하려면 객체 생성이 먼저

내가 직접 객체를 만드는 것이 아니라, 스프링이 만든 걸 주입 받아 사용한다. (객체에 대한 제어권을 스프링이 가진다. )

스프링이 주입하는 역할. 

 

Contrainer : 공간

스프링빈을 담아두는 공간

Ioc, DI에 따라 스프링이 객체 (Bean)의 생성 관리를 담당하는데 이 컨테이너에 객체를 모아 관리한다. 

컨테이너란, 스프링이 객체를 만들어 모아두고 관리하는 곳이다. 

우리가 의존성 주입을 요구하면 여기서 찾는다. 

 

Bean :스프링 빈

스프링이 관리하는 객체이다. 컨테이너에 들어 있다. 

 

--------------------------------

 

직접 객체를 생성하지 않고, 스프링이 객체 생성 관리를 해준다 = 스프링 빈으로 등록해야함

 

스프링 빈 등록 방법 (DI):

1. @Component

2. @Configuration + @Bean

 

@Component 는 이미 @Service, @Repository  어노테이션에 포함되어 있다.

 

스프링이 객체 생성을 하려면

@Autowired 

private Service service;

객체 생성 완~

 

DI 하는 방법은 3가지"

1. 필드 주입 : @Autowired 필드 생성

2. Setter 로 주입 : setter위에 @Autowired

3. 생성자로 주입 받기 : 생성자 위에 @Autowired

728x90

'JAVA > Spring' 카테고리의 다른 글

Spring MVC, DDD  (0) 2024.04.14
게시판 CRUD  (0) 2022.12.06
Spring 구조와 @들 그리고 Controller-mapping-service  (0) 2022.12.04