스프링 프레임워크란 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 경량 컨테이너로 자바 객체를 담고 직접 관리합니다. 객체의 생성 및 소멸 그리고 라이프 사이클을관리하며 언제든 Spring 컨테이너로 부터 필요한 객체를 가져와 사용할 수 있습니다.
Spring의 특징
1. IOC 기반이다.
2. DI (Dependency Injection) : 의존성 주입
3. AOP (Aspect-Oriented Programming) : 관점지향 프로그래밍
4. POJO(Plain Old Java Object) 방식
5."Spring MVC"라 불리는 모델-뷰-컨트롤러(MVC) 패턴 방식
IoC
IoC란 인스턴스 (객체)의 생성부터 소멸까지 객체 생명주기 관리를 개발자가 직접 하는게 아닌 스프링(컨테이너)가 대신 해주는 것을 말한다.
이것을 다른말로 '제어의 역전'이라고도 한다
(사용자가 하는제어를 스프링에게 제어권이 넘어가는걸 뜻함)
DI
의존성 주입이란 객체가 서로 의존하는 관계가 되게 외부에서 생성하여 주입시키는 것. 객체지향에서는 의존성을 하나의 객체가 어떠한 다른 객체를 사용하고 있는 것을 의미하지만 SPRING에서 말하는 DI는 각 클래스 사이에 필요로 하는 의존관계를 빈(Bean) 설정 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것입니다.
AOP(Aspect Object Programming)
로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리 할 수 있다.
여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법이다.
POJO(Plain Old Java Object)
PSA(Portable Service Abstractions)
어댑터 패턴,jdbc와 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 하는 것을 서비스 추상화라고 한다.
OXM : 트랜잭션등 스프링은 다양한 기술에 대한 PSA를 제공
*스프링의 대삼각형(3대 요소)
