개발/SPRING & JPA

[Spring-Core] 1.1 Introduction to the Spring IoC container and Beans

Leedo1982 2021. 4. 16. 17:52

Spring Framework의 IoC(Inversion of Control) container 는 가장 중요한 것이다. Spring 프레임워크의 IoC container  에 대한 철저한 처리에 이어 Spring 의 AOP(Aspect-Oriented Programmin) 기술에 대한 포괄적인 설명이 이어진다. Spring 프레임워크는 자체적인 AOP(이해하기 쉽고 java 엔터프라이즈 프로그래밍에서 AOP 요구사항의 80% sweet spot 을 성공적으로 해결하는) 프레임워크가 있다.

 

AspectJ 와 함께 Spring 의 통합 커버리지도 제공합니다.

 

이 장에서는 Ioc 원칙의 Spring 프레임워크 구현을 다룹니다. IoC 는 DI(dependency injection) 라고도 합니다. (1)constructor  arguments, (2)arguments to a factory method, (3)팩터리메소드에서 생성되거나 반환된 object instance에 설정된 속성을 통해서만 objects 의 의존성(dependencies)을 정의하는 프로세스입니다. container 는 bean 을 생성할 때 이러한 의존성을 주입합니다. 이 프로세스는 기본적으로 class 또는 Locator Pattern 같은 메커니즘을 사용하여의존성의 인스턴스화 또는 위치를 제어하는 Bean 자체의 inverse(hence the name, Inversion of Control) 입니다.

 

org.springframework.beans 과 org.springframework.context 패키지는 Spring 프레임웍 IoC container 의 기초이다. 이 BeanFactory interface 는 모든 유형의  object 를 관리할 수 있는 고급 구성 메커니즘을 제공한다. 

ApplicationContext 는 Beanfactory 의 sub-inferface 이며, 아래가 추가된다.

- Spring 의 AOP 기능과 쉽운 통합

- 메세지 자원처리(국제화 사용)

- 이벤트 발행(Event publication)

- 웹 애플리케이션을 사용하기 위한 WebApplicationContext 같은 애플리케이션 계층의 특정 컨텍스트

 

간단히 말해서 Beanfactory 는 구성 프레임웍과 기본 기능을 제공하고 ApplicationContext 는 더 많은 엔터프라이즈별 기능을 추가한다.  ApplicationContext 는  Beanfactory 의 완전한 상위집합이고, Spring 의 IoC container 의 설명에서 exclusively 하게 사용된다. 사용에 대한 자세한 내용은 ApplicationContext 대신에 Beanfactory(docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-beanfactory) 를 참조하면 된다.

 

Spring 에서 애플리케이션의 백본을 형성하고 Spring IoC container 에서 관리되는 object 를 Bean 이라고 부른다.  Bean 은 Spring IoC container 에서 인스턴스화, 조립 및 관리되는 object 입니다. 그렇지 않으면 Bean은 애플리케이션에서 단순히 수많은 object 중 하나입니다. bean 과 이들간의 의존성은 container  에서 사용하는 구성 메타데이터에 반영됩니다.

 

'개발 > SPRING & JPA' 카테고리의 다른 글

[토비] 8.4 스프링의 기술  (0) 2021.05.23
[Spring-Core] Bean Overview  (0) 2021.04.19
[Spring-Core] 1.2 Container Overview  (0) 2021.04.16
[Spring-Core] IoC Containers  (0) 2021.04.14
Jpa entity primitive vs wrapper  (0) 2021.03.04