spring

[ 모각코 ] spring IOC container

cheesecrust1008 2024. 3. 15. 18:15


## IOC container
ioc container 란??

보통 컨테이너란 생명주기를 관리, 인스턴스들에게 기능을 제공해 줍니다.
IOC container에서 객체를 생성, 관리, 의존성을 관리해 줍니다.

인스턴스 생성 부터 소멸까지 관리합니다

**인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해줍니다.**

**객체관리 주체가 프레임워크(Container)가 되기 때문에 개발자는 로직에 집중할 수 있는 장점이 있습니다.**

- IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다.
- POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.
- 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다.
- 개발자는 비즈니스 로직에 집중할 수 있다.
- 객체 생성 코드가 없으므로 TDD가 용이하다.

> **POJO(Plain Old Java Object)란?** 주로 특정 자바 모델이나 기능, 프레임워크를 따르지 않는 Java Object를 지칭한다.  
> Java Bean 객체가 대표적이다.  
> 간단하게 getter / setter를 생각하면 될 것 같다.


## **IoC의 분류**

### **DL(Dependency Lookup) 과 DI (Dependency Injection)**

- **DL** : 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lockup하는 것
- **DI** : 각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
    
    - Setter Injection (수정자 주입)
    - Constructor Injection (생성자 주입)
    - Method Injection (필드 주입)


RestTemplete 이란?

Spring 3.0 부터 지원하는 Spring의 HTTP 통신 템플릿

 · HTTP 요청 후 JSON, XML, String 과 같은 응답을 받을 수 있는 템플릿

 · Blocking I/O 기반의 동기방식을 사용하는 템플릿

 · RESTful 형식에 맞추어진 템플릿

 · Header, Content-Tpye등을 설정하여 외부 API 호출

 · Server to Server 통신에 사용


IOC / DI, AOP, PSA

@RequiredArgsConstructor


@Getter
가 있어야 messageConverter 가 가능합니다.

.ok = staus 와 같다

java throw, throws 

throws의 경우에는 try catch로 처리해 주어야 합니다.

JPA, hibernate

java 와 같은 객체 지향 언어의 메모리 사용은 code 영역, static 영역, stack 영역, heap 영역이 있다.

'spring' 카테고리의 다른 글

[모각코] 자바가 확장한 객체 지향  (0) 2024.03.29
[ 모각코 ] 소프트웨어 아키텍쳐  (1) 2024.03.22
[모각코] oop for spring  (1) 2024.03.08