Spring의 주요 특징 #제어의 역행, #의존성주입

#Spring의 주요특징

1. POJO 기반의 구성

2. 의존성 주입을 통한 객체 간의 관계구성

3. AOP(Apect-Oriented-Programing)지원

4. WAS의 종속적이지 않은 개발환경

 

1. POJO 기반의 구성

스프링은 다른 프레임 워크랑은 다르게 관계를 구성할 때 별도의 API 등을 사용하지 않는 POJO(Plain Old Java Object)의 구성만으로도 가능하도록 제작되어있다.

 

 즉 Java Code를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있다는 얘기이다.

이것이 시사하는 바는 개발할 때 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않다는 것을 의미하기 때문이다.

 

 

2. 의존성주입(DI)을 통한 객체 간의 관계 구성

 컴퓨터 조립시 메인보드에 맞춰서 그에 맞는 부품들을 구매하게 되듯이 프레임워크에 필요한 부품을 개발하고 조립하는 방식의 개발을 한다. 

 

그렇게 조립된 코드의 최종 호출은 개발자에 의해서 이루어지지 않고 프레임워크의 내부에서 결정된 대로 이루어지게 되는데 이러한 현상을 '제어의 역행'이라고한다.

 

 기존의 개발자들이 New 연산자, 인터페이스 호출, 팩토리 호출방식으로 객체의 인스턴스를 생성함으로 인스턴스 생성 방법에 대한 제어권을 개발자들이 가지고 있었다. 제어의 역행(IoC)은 곧  인스턴스 생성의 제어를 개발자 본인이 아닌 다른 누군가에게 해주는 컨테이너이다. 

 

다시 말하자면 인스턴스의 생성부터 소멸까지의 생명주기 관리를 개발자가 아닌 컨테이너가 대신해준다는 것이다.

 

의존성 주입은 제어의 역행이 일어날 때 스프링이 내부에 있는 객체(Bean)간의 관계를 관리할 때 사용하는 기법이다.

 

의존성이라는 용어는 어떤 객체가 혼자일을 처리할 수 없다는 것을 의미한다. 만일 어떤 객체 A가 다른 객체 B의 도움을 받아야만 온전히 일을 처리할 수 있을때 A는 B에 의존적이다라고 말하며 Java에서는 일반적으로 인터페이스를 이용해서 이런 의존적인 객체의 관계를 최대한 유연하게 처리할 수 있도록 한다.

 

 

'Spring' 카테고리의 다른 글

Spring - ObjectMapper  (0) 2022.01.11
URI vs URL 개념정리  (0) 2022.01.06
REST API란 무엇인가?  (0) 2022.01.06
POJO의 특징  (0) 2022.01.06
Failed to start bean 'documentationPluginsBootstrapper'  (0) 2022.01.05