스프링이란?
in Spring on Spring Boot
스프링
스프링이란?
스프링은 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크다.
애플리케이션 프레임워크는 애플리케이션 개발을 빠르고 효율적으로 할 수 있도록
애플리케이션의 바탕이 되는 틀과 공통 프로그래밍 모델, 기술API 등을 제공한다.
[ 애플리케이션 기본 틀 - 스프링 컨테이너]
스프링을 사용하려면 먼저 스프링 컨테이너를 다루는 방법과 스프링 컨테이너가
애플리케이션 오브젝트를 이용할 수 있도록 설정정보를 작성하는 방법을 알아야 한다.
[ 공통 프로그래밍 모델 - IoC/DI, 서비스 추상화, AOP ]
⒈ IoC/DI - 오브젝트의 생명주기와 의존관계에 대한 프로그램이 모델
⒉ PSA(서비스 추상화) - 구체적인 기술과 환경에 종속되지 않도록 하는 방법
⒊ AOP - 애플리케이션 코드에 산재해서 나타나는 부가적인 기능을 독립적으로 모듈화하는 프로그래밍 모델
[ 기술 API ]
다양한 기술을 스프링에서 일관된 방식으로 사용할 수 있도록 지원해주는 기능.
스프링을 사용한다는 것은 바로 이 세 가지 요소를 적극적으로 활용해서 애플리케이션을
개발한다는 뜻이다. 클래스는 스프링 컨테이너 위에서 오브젝트를 만들어져 동작하게
만들고, 코드는 스프링의 프로그래밍 모델을 따라서 작성하고, 엔터프라이즈 기술을
사용할 때는 스프링이 제공하는 기술 API와 서비스를 활용하도록 해주면 된다.
여러가지 기술들의 모음
여기서 가장 핵심은? → 스프링 프레임워크
그리고 스프링 부트는 스프링 데이터, 스프링 세션 등 다양한 기능들을 쉽게
사용할 수 있게 도와주는 것이 스프링 부트!!!
[ 스프링 프레임워크 ]
핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타
웹 기술 : 스프링 MVC, 스프링 WebFlux
데이터 접근 기술 : 트랜잭션, JDBC, ORM지원, XML지원
기술 통합 : 캐시, 이메일, 원격접근, 스케줄링
테스트 : 스프링 기반 테스트 지원
언어 : 코틀린, 그루비
[ 스프링 부트 ]
스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
⒈ 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성한다.
⒉ Tomcat같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 된다.
⒊ 손쉬운 빌드 구성을 위한 Starter 종속성을 제공
→ starter만 사용하면 필요한 라이브러리 알아서 가져옴
⒋ 스프링과 서드파츠 라이브러리 자동 구성
⒌ 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
⒍ 관례에 의한 간결한 설정
[ 스프링의 진짜 핵심 ]
✓ 스프링은 자바 언어 기반의 프레임워크
✓ 자바 언어의 가장 큰 특징 - 객체 지향 언어
✓ 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
✓ 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
[ DI ]
✓ 의존관계, 의존성 주입
✓ DI 컨테이너 제공
스프링의 DI(Dependency Injection) 덕분에 OCP, DIP를 가능하게 지원해준다.
이렇게 되면 클라이언트 코드의 변경 없이 기능을 확장할 수 있다.
즉, 쉽게 부품을 교체하듯이 개발할 수 있다.