- 스프링의 주요 특징
- POJO(Plain Old Java Object) 기반의 구성 (1)
- 의존성 주입(DI)을 통한 객체 간의 관계 구성 (2)
- AOP(Aspect-oRiented-Programming) 지원 (3)
- WAS에 종속적이지 않은 개발 환경 (4)
1-(1)
POJO 구성
일반적인 자바 코드를 이용해 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있다는 뜻이다.
특정 라이브러리나 컨테이너 기술에 종속적이지 않다는 것을 의미.
1-(2)
제어의 역행(IOC)
- 메서드, 객체의 호출작업을 개발자가 아닌 외부에서 결정하는 방식 (필요한 부분을 개발해서 끼워 넣기의 형태로 개발가능)
- 컴퓨터 조립 방법과 유사하다.
(어차피 각 부품간의 연결이나 호출은 메인보드에서 컨트롤 하기 때문에 호환되는 다른 장비들을 마음대로 끼워넣을 수 있다)
의존성 주입(DI)
- 제어의 역행이 일어날 때 스프링이 내부에 있는 객체(Bean)들 간의 관계를 관리할 때 사용하는 기법
- 의존적인 객체를 직접 생성, 제어하는 것이 아닌 IOC로 특정 객체에 필요한 객체를 외부에서 결정하여 연결하는 것을 의미
- 개발자는 자신이 만드는 객체나 클래스 이외의 신경을 쓸 필요가 없고 코드에 필요한 객체는 스프링을 통해 주입받는 구조로 작성된다.
DI의 종류
- 생성자(new)를 통한 주입
- set 메서드를 이용한 주입
- 이에 대한 처리는 애노테이션 만으로 간단하게 처리가능하다.
1-(3)
AOP의 지원
- 반복적인 코드의 제거
- 횡단 관심사(cross-concern)를 모듈로 분리할 수 있다.
AOP의 장점
- 핵심 비지니스 로직에만 집중하여 코드를 개발 가능
- 각 프로젝트마다 다른 관심사를 적용할 때 코드의 수정을 최소화
- 원하는 관심사의 유지보수가 수월한 코드 구성 가능
1-(4)
트랜잭션의 지원
- DB를 이용할 때 반드시 신경써야 할 부분은 하나의 업무가 여러 작업으로 이루어 질 때의 트랜잭션의 처리이다.
- 트랜잭션의 처리는 상황에 따라 복잡하게 구성될 수 있는데 스프링은 이런 트랜잭션의 관리를 애노테이션이나 XML으로 설정 가능하기 때문에 편리하다.