Spring이란?
Spring이란 것은 JAVA 웹 프레임워크로 객체지향언어인 자바의 특성을 살려줄 수 있는 프레임워크이다.
Spring 특징
먼저 알아둬야 할 개념이 있다. 바로 스프링 컨테이너이다. 자바 객체를 Spring에서는 빈(Bean)이라고 하는데 빈의 생성부터 소멸까지 관리해주는 곳이 Spring Container이다.
대부분 ApplicationContext을 의미하며 여러 기능을 제공한다. 당연 이것은 EJB에서 문제가 되었던 객체 간 의존 관계를 관리를 해결하기 위해서 한 것이다.
Bean은 기본적으로 싱글턴 방식을 채택하고 있으며 이름을 항상 다르게 지정해야 하는 규칙이 있다. 이는 오류 발생 시 검색에 용이하기 위함과 성능 최적화를 위함이다.
- IoC (제어 역전) : 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 스프링 컨테이너에 위임한다. 이를 통해서 DI, AOP가 가능해진다. 이로 인해 객체의 제어권을 컨테이너로 넘겼기에 비즈니스 로직에 좀 더 집중할 수 있게 된다.
- DI (의존성 주입) : 사용할 객체를 직접 생성하지 않고 스프링 컨테이너가 생성한 객체를 주입받아 사용하는 방식이다.
- AOP (관점 지향 프로그래밍) : 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리해 관리하는 것이다.
- POJO (Plain Old Java Object) : 별도의 프레임워크 없이 JAVA EE를 사용할 때에 비해 특정 인터페이스를 직접 구현하거나 상속받을 필요 없이 기존 라이브러리르 지원하기 용이하고 가벼운 객체이다.
Spring Boot
- Spring을 편리하게 사용할 수 있도록 지원(별도의 설정 불필요)
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
- 별도의 WAS를 설치하지 않아도 된다.
- 손쉬운 빌드 구성을 위한 starter 종속성 제공
- 스프링과 외부 라이브러리 자동 구성
- 외부 구성, 상태 확인 등의 프로덕션 준비 기능을 제공
차이점
- 임베디드 서버로 인해 WAS 설치 불필요. 그로 인한 jar 파일로 배포가 가능하다.
- starter로 인한 의존성 관리의 편리성.
- 스프링 프레임워크 기능을 사용하기 위한 자동 설정 제공(추가된 라이브러리 실행 시 필요한 환경 설정을 알아서 찾아준다. @SpringBootApplication)
- Spring Boot Actuator를 통한 모니터링 가능.