스프링의 주요 특징
Spring Framework란?
"자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크"
*POJO(Plain Old Java Object) 기반의 구성
POJO란?
오래된 방식의 간단한 자바 오브젝트라는 말로서 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 의미한다. 즉, 별도의 API가 필요하지 않은 일반적인 자바 코드를 이용하여 개발이 가능하다.
POJO의 조건
- 특정규약에 종속되지 않는다.
- 특정환경에 종속되지 않는다.
*DI(의존성 주입)을 통한 객체간의 관계구성
- 객체 간의 의존성을 개발자가 설정하는 것이 아닌 스프링 컨테이너가 주입시켜주는 기능
- 객체를 쉽게 확장하고 재사용할 수 있음
*AOP(Aspect Oriented Programming, 관점지향 프로그래밍) 지원
- 반복적인 코드를 줄이고, 개발자가 비지니스 로직에만 집중할 수 있도록 지원한다.
- 핵심로직이 중요하지, 부수적인 코드가 중요한 것이 아니다!
- 스프링은 반드시 처리가 필요한 부분을 '횡단 관심사'라고 하며, 이러한 횡단관심사를 분리해 제작하는 것이 가능
*편리한 MVC 구조
*WAS에 종속적이지 않은 개발환경
*IoC(Inversion of Control, 제어의 역전) = 객체에 대한 제어권
- 기존에는 개발자에게 제어권이 있었다. (new 연산자로 객체생성)
- 객체의 제어권을 스프링에게 넘김(개발자에게 편리함을 제공, 코드의 최소화)
- 인스턴스의 라이프 사이클(생성->소멸)을 개발자가 아닌 스프링 컨테이너가 담당
*트랜잭션(Transaction)의 지원
- 복잡한 트랜잭션관리를 애노테이션이나 XML로 설정할 수 있기 때문에 개발자가 매번 상황에 맞는 코드를 작성할 수 없게 설계