본문 바로가기

Programming/SPRING

Spring Boot란?

1. 스프링 프레임워크(Spring Framework)란?

: Spring Framework는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 스프링(Spring)이라고도 한다. 스프링은 엔터프라이즈 애플리케이션(기업형 프로그램으로 자바에서는 Java EE를 통해 개발)개발을 더욱 편리하게 하기 위한 수단이라고 볼 수 있다.

- 스프링은 EJB(Enterprise Java Beans: 시스템 구현을 위한 서버측 컴포넌트 모델) 컨테이너 사용으로 인한 개발 생선성과 유지 보수성 저하와 테스트와 배포의 어려움을 해결하기 위해 개발되었다. 

 

2. 스프링 프레임워크 특징

- 경량 컨테이너로서 자바 객체를 직접 관리한다.

- POJO(Plain Old Java Object) 방식의 프레임워크이다.

: 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.

- 제어반전(IoC: Inversion of Control) 기반

: 컨트롤의 제어권이 사용자가 아닌 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.

- 의존성 주입(DI: Dependency Injection) 기반

: 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결한다.

- 관점 지향 프로그래밍(AOP: Aspect-Oriented Programming) 기반

: 트랜잭션, 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리 가능하다.

 

3. 스프링 부트(Spring Boot)란?

: 스프링 프레임워크 기반 프로젝트를 어려운 설정이나, WAS에 대한 설정 없이 바로 개발에 들어갈 수 있도록 만든 프레임워크이다.

- 스프링 프레임워크를 사용하려면 많은 XML 설정 파일들을 장성해야하고, 기존에 사용했던 설정들을 copy and paste하거나 검색을 통해 일일이 설정을 해야하나 스프링 부트를 사용하면 복잡한 설정 없이 쉽고 빠르게 프레임워크를 사용할 수 있다.

 

4. 스프링 부트 특징

- 번거로운 XML 설정 요구 X

- CoC: Convention over Configuration

: 일일히 관련 라이브러리를 찾아 추가할 필요 없이 spring-boot-starter-web을 추가하면 관련 라이브러리를 받아온다.

- 내장 Tomcat, Jetty, Undertow

: Tomcat, Jetty, Undertow와 같은 서버를 내장하고 있어 특별한 설정 없이 Web Starter의 의존성만 추가해주면 @SpringBootApplication 어노테이션이 선언되어 있는 클래스의 main() 메소드를 실행하는 것만으로 서버를 구동시킬 수 있다. 

- 설정의 자동화

: 어노테이션을 선언하여 스프링에서 자주 사용했던 설정들을 자동으로 등록한다.

초기에는 @EnableAutoConfiguration 어노테이션, 현재는 @EnableAutiConfiguration + @SpringBootConfiguration + @ComponentScan으로 구성되어 있는 @SpringApplication 어노테이션을 사용한다.

- 라이브러리 버전 자동 관리

: pom.xml에 스프링 부트 버전을 입력하면 스프링 라이브러리뿐만 아니라 서드 파티 라이브러리들도 호환되는 버전으로 자동으로 다운된다.

- 단독으로 실행이 가능한 JAR

: WAR 파일로 패키징 해야하는 웹 프로젝트와 달리, 내장 Tomcat을 지원하기 때문에 JAR파일로 패키징 하여 웹 애플리케이션 실행 가능하다.