Spring Framework
기업형 애플리케이션 개발
엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크
애플리케이션 프레임워크
특정 계층이나 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크
경량급 프레임워크
Spring이 제공하는 다양한 기능들을 Module로 쪼개어 놓음.
필요한 Module만 Load해 개발할 수 있으므로 단순한 웹 컨테이너에서도 엔터프라이즈의 고급기술을 대부분 사용 가능하다. (웹 컨테이너 -> tomcat)
엔터프라이즈 개발 용이
개발자는 설정에 관여하지 않고 Biz Logic 개발에 전념할 수 있도록 해준다.
설정은 Spring Framework에서 대부분 처리한다.
오픈소스
Open Source의 장점(빠른 지원, 빠른 버그픽스 등)을 충분히 취하면서
단점(보안상 취약점)과 한계를 잘 극복함
특징
트랜잭션 처리를 위한 일관된 방법을 지원
트랜잭션에 대한 처리는 Spring이 직접 관리해 개발자가 관여할 필요가 없다.
개발자는 트랜잭션 처리의 기준만 제공한다.
Persistence(영속성)와 관련된 다양한 API 지원
MyBatis, Hibernate 등 데이터베이스 처리를 위한 ORM(Object Relational Mapping) 프레임워크들과의 연동 지원
Library Dependency 지원
Spring은 Maven, Gradle 등의 빌드 툴을 이용해 필요한 Library를 자동 관리한다.
관습에 따른 설정 지원. (Spring Boot 한정)
Spring에서 개발자가 일일이 설정해야 했던 반복되는 내용들을 자동 설정한다.
Dependency 버전 충돌 문제 감소 (Spring Boot 한정)
Spring에서 Library Dependency 적용 시 Version에 따라 충돌/오작동 되던 문제를 해결.
Spring Boot 버전과 알맞은 Library 버전을 찾아 적용해준다.
Spring DI/IoC
- JAVA 의 Class 상속 / Interface 를 이용한 추상화를 기반으로 하는 개발 방법.
- Spring은 아래 DI/IoC 를 강력하게 지원하는 프레임워크.
- IoC : Inversion of Control (기능)
프로그램을 제어하는 패턴 중 하나.
DI 는 IoC패턴의 구현체 중 하나.
DI에 따라 프로그램의 흐름이 완전히 변경됨.- DI : Dependency Injection
프로그램에 필요한 객체들을 Bean Container 에 두고 필요할 때 마다 사용함.- 스프링은 DI를 기준으로 많은 프레임워크 모듈 들이 만들어짐.
- Spring 은 DI Framework 혹은 IoC Framework 라고 부름.
Maven
Spring 을 사용하기 위해 Maven Build 가 필요하다.
최근에는 Maven 대신 Gradle를 더 많이 사용함.
Spring 의 의존 라이브러리를 간편하게 추가할 수 있도록 의존성 주입을 제공
그 외 오픈 소스 라이브러리도 Maven Repository 에 업로드 함으로써 대부분의 라이브러리를 자동으로 추가 가능함.
프로젝트의 구조를 자동으로 구성함.
Build 를 통해 배포를 위한 파일을 생성함.