Spring

[Spring] Spring Core 설명

오잎 클로버 2022. 1. 30. 18:30
728x90

스프링 코어란(Spring Core)?
Spring Container

Spring 프레임워크의 근간이 되는요소로 IoC(또는 DI) 기능을 지원하는 영역을 담당합니다.

빈 저장소를 기반으로 빈 클래스들을 제어할 수 있는 기능을 지원하기도 합니다.

빈 저장소의 경우, IOC 패턴이 적용되어 객체 구성부터 의존성 처리까지 모든 일을 처리하는 핵심적인 역할을 합니다. 

 

Container는 개발자를 대신하여 Bean을 생성/관리/제거 합니다.

Container가 Bean을 전체적으로 관리를 해주므로 덕분에

개발자는 모듈 간에 의존 및 결합으로 인해 발생하는 문제로부터 자유로워졌습니다.

 

추가로 독립적인 코드를 어노테이션 (@Bean)으로 넘겨주면 Container가 알아서 호출해줍니다.

 

Container가 개발자를 대신하여 메소드(코드)를 호출 및 필요한 자원을 전달하는 설계 구조를

IOC(Inversion Of Control / 제어 반전)이라고 합니다.

 

IOC는 메소드가 필요로 하는 자원들을 코드가 실행되는 타임에 전달을 하는 데,

이를 DI(Dependcy Injection / 의존성 주입)이라고 합니다.

 

Dependency Injection은 Reflection이라는 기술을 기초로 구현되어 있습니다. Reflection기술은 런타임에 코드의 메타 데이터를 읽는 기술입니다. 특히 메서드의 Signature를 읽을 수 있고, Signiture에 메서드가 필요로 하는 매개변수 정보가 있습니다. Dependency Injection은 Reflection으로 얻은 코드 데이터로 메서드가 필요로 하는 자원을 런타임에 제공합니다.

 

Container가 아무리 알아서 메소드를 호출하고 필요한 자원을 전달한다고 하지만...

직접 조작하고 싶을 수 있습니다.

그럴 경우 Container의 설정 정보가 담긴 XML문서를 변경하면 됩니다.

런타임을 조작하고 싶다면 ApplicationContext 객체를 사용하면 됩니다.

 

이상입니다.