: 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크
경량 컨테이너로서 Java 객체를 직접 관리한다.
: 각각의 객체 생성, 소멸과 같은 Life Cycle을 관리하며 Spring으로부터 필요한 객체를 얻어올 수 있다.
제어 역행(IoC)
: 컨트롤의 제어권이 사용자가 아니라 프레임워크에게 있어, 필요에 따라 Spring에서 사용자의 코드를 호출한다.
의존성 주입(DI)
: 각각의 계층이나 서비스들간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
관점 지향 프로그래밍(AOP)
: 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
트랜잭션 관리 프레임워크
: 추상화 된 트랜잭션 관리를 지원하며, 설정 파일(xml, java, property 등)을 이용한 선언적인 방식 및 프로그래밍을 통한 방식을 모두 지원한다.
MVC(Model View Controller)
: 웹 프로그래밍 개발시 거의 표쥰적인 방식인 Model-View-Controller 패턴을 사용한다.
일반 자바 프로그램
클래스 내부의 객체 생성 -> 의존성 객체의 메소드 호출
Spring(IoC)
Spring에게 제어를 위임, Spring이 만든 객체를 주입 -> 의존성 객체의 메소드 호출
IoC는 프로그램 제어권을 역전시키는 개념, DI는 해당 개념을 구현하기 위해 사용하는 디자인 패턴 중 하나로, 이름 그대로 객체의 의존관계를 외부에서 주입시키는 패턴을 말한다.
관점 지향 프로그래밍(프로젝트 구조를 바라보는 관점을 바꿔보자), 핵심 로직과 부가 기능을 분리하여 애플리케이션 전체에 걸쳐 사용되는 부가 기능을 모듈화하여 재사용할 수 있도록 지원하는 것
애플리케이션을 개발할 때 사용하는 디자인 패턴으로, 애플리케잇견의 개발 영역을 MVC로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식
MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 전달받으면 요청 사항을 처리하기 위한 작업을 하는데, 이 때 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터를 Model이라고 한다.
Model을 이용하여 웹 브라우저와 같은 애플리케이션의 화면에 보이는 리소스(Resource)를 제공하는 역할
컨트롤러는 클라이언트 측의 요청을 직접적으로 전달 받는 엔드 포인트(End Point)로써 Model과 View 중간에서 상호작용을 해주는 역할을 한다.
Spring으로 애플리케이션을 만들 때에 필요한 설정을 간편하게 처리해주는 별도의 프레임워크