Spring
정의
* 자바(JAVA) 플랫폼을 위한 오픈소스(Open Source) 애플리케이션 프레임워크(Framework)
* 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크
* 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 도구
* POJO(Plain Old Java Object) BEAN CONTAINNER
특징
* 경량 컨테이너로 자바 객체를 직접 관리하기때문에 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
* 스프링은 POJO(Plain Old Java Object) 방식의 프레임워크로 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
* 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
* 스프링은 의존성 주입(DI : Dependency Injection)을 지원하여 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
* 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원한다.
따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
* 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공하는 등 영속성과 관련된 다양한 서비스를 지원한다.
* 확장성이 높다. 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.
++ Plain Object Java Object : 기본적으로 사용자가 만들어낸 객체를 의미한다. 스프링은 사용자가 만들 객체들에 대해서도 라이프사이클 관리를 위임해서 수행하며, 이들의 조합으로 어플리케이션을 만들 수 있다.
++ AOP : 관점지향형 프로그램으로 사용자들이 트랜젝션 처리/로깅/예외 처리들의 로직을 공통으로 처리할 수 있는 기능을 지원하며 해당 기능을 잘 사용하면 비지니스로직와 기타 공통모듈이 섞이는 것을 방지하여 비지니스 로직에 집중할 수 있도록 한다.
++ DI : IoC 구현을 통해 의존관계 해결을 위한 디자인 패턴으로 xml 설정이나 애노테이션을 통해 의존성 주입을 쉽게 할 수 있는 방법을 제공한다.
++ IoC : 컴퓨터 프로그램의 사용자 지정 부분(프로그래머가 작성한 소스코드)이 프레임워크의 흐름제어를 받는 디자인 패턴이다.
Spring Boot
정의
어플리케이션을 개발하는데 있어서 필요한 라이브러리 의존성들을 안전성이 확인된 버전으로 조합하여 미리 준비된 구성으로 제공하며 MVC 환경을 만들거나 여기에 필요한 데이터베이스, 뷰 템플릿 등을 구성하는데 있어서 자동구성을 지원한다.
기본적으로 요구되는 요구사항들을 처리하기 위해 프로퍼티를 통한 설정값을 제어할 수 있도록 하고, 스프링부트를 시작하기 위해 XML 기반 설정파일이나 코드를 요구하지도 않는다.
내장된 웹서버를 이용해 별도의 웹서버 환경없이 즉시 단독으로 애플리케이션을 실행할 수도 있다. 이에 개발자들이 어플리케이션 로직 개발을 쉽게! 그리고 바로! 시작할 수 있다.
특징
* 어플리케이션의 기능적 요소 뿐만 아니라 임베디드 서버, 시큐리티, 외부 설정 연계등 개발의 모든 사이클을 제공한다.
* 로직에 집중 할 수 있도록 설정을 없앴다.
– 참고 :
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
Spring과 Springboot 차이
기존 spring framework가 기본적으로 해야할 셋팅이 너무 많고 어려웠던 점을 해소하기 위해 나온 것이 spring boot!