Spring
은 자바(JAVA) 엔터프라이즈 개발을 위한 오픈소스 애플리케이션 프레임워크이다.
엔터프라이즈
란 서버에서 동작하며 기업과 조직의 업무를 처리해주는 것을 얘기한다. 또한 중요한 기업 핵심정보를 다루기 때문에 보안, 안정성, 확정성이 요구된다.
이를 위해 사용 되는 것이 JavaEE(Java Enterprise Edition).
JavaEE플랫폼에서는 대규모, 다계층, 확장성, 신뢰성, 보안 네트워킹 애플리케이션의 개발과 실행을 위한 API 및 환경을 제공하고 있고 자바로 구현되는 웹프로그래밍에서 가장 많이 사용되는 JSP, Servlet, JDBC등의 많은 기술들이 포함되어 있다.
오픈소스
란 소프트웨어 혹은 하드웨어 제작자의 권리를 지키면서 원시 코드를 누구나 열람할 수 있도록 한 소프트웨어
프레임워크
란 개발 할 때 빈번하게 사용되는 범용 기능들을 한꺼번에 제공하여 개발의 기능 향상을 목표로 하는 소프트웨어 환경이다.
즉, 애플리케이션을 만들 때 개발에 필요한 기능을 제공해주는 틀이라고 생각하시면 될것같다.
참고로 Spring의 정확한 표현은 스프링 프레임워크(Spring Framework)
.
경량 컨테이너
제어 역행(IOC : Inversion Of Control)
의존성 주입(DI : Dependency Injection)
관점지향 프로그래밍(AOP : Aspect-Oriented Programming)
Spring Core
Spring Context
Spring AOP
Spring Web
Spring MVC
Spring DAO
Spring ORM
위에서 설명한 Spring은 다양한 특징들로 인해 java의 대표적인 프레임워크로 자리 잡았다. 하지만 복잡한 초기 설정과 같은 단점을 가지고 있었지만, Spring Boot로 인해 정말 간단하게 설정을 할 수 있게 되었다.
Spring Boot는 내부에 Tomcat이 포함되어있다.
starter를 통한 dependency 자동화
org.springframework.boot:spring-boot-starter-*
라고 특정 목적을 달성하기 위한 의존성 그룹을 통해 dependency를 하나하나 설치 및 관리할 필요 없이 편리하게 dependency를 사용할 수 있다.spring-boot-starter-data-jpa
를 porm.xml(메이븐) 또는 build.gradle(그레들)에 추가해주면 JPA에 필요한 라이브러리를 자동으로 import한다.spring-boot-starter-data-jpa
를 gradle에 추가했을때 상호작용하고 호환되는 버전의 dependency들이 자동적으로 함께 추가되었다.Spring Security, Spring data JPA등과 같은 다른 Spring Framework 구성 요소를 쉽게 가져다 쓸 수 있다.
즉, 스프링 부트는 새로운 기술이 아닌 스프링 프레임워크의 단점을 보완한 도구이다.
https://goddaehee.tistory.com/156
https://ooeunz.tistory.com/56#google_vignette