Spring boot란?
스프링(Spring)을 더 쉽게 이용하기 위한 도구이다. 스프링을 이용하여 개발을 할 때는, 이것저것 환경설정 세팅을 직접 해줘야 하지만, 스프링부트를 사용하면 이러한 설정들을 최소화 시켜준다.
Spring Framework는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 스프링(Spring)이라고도 한다. 스프링은 엔터프라이즈 애플리케이션(기업형 프로그램으로 자바에서는 Java EE를 통해 개발)개발을 더욱 편리하게 하기 위한 수단이라고 볼 수 있다.
- 스프링은 EJB(Enterprise Java Beans: 시스템 구현을 위한 서버측 컴포넌트 모델) 컨테이너 사용으로 인한 개발 생선성과 유지 보수성 저하와 테스트와 배포의 어려움을 해결하기 위해 개발되었다.
스프링 프레임워크 기반 프로젝트를 어려운 설정이나, WAS에 대한 설정 없이 바로 개발에 들어갈 수 있도록 만든 프레임워크이다.
- 스프링 프레임워크를 사용하려면 많은 XML 설정 파일들을 장성해야하고, 기존에 사용했던 설정들을 copy and paste하거나 검색을 통해 일일이 설정을 해야하나 스프링 부트를 사용하면 복잡한 설정 없이 쉽고 빠르게 프레임워크를 사용할 수 있다.
Spring boot의 큰 특징
1. Spring boot Starter
Spring에서는 설정을 잘못하면 서로 간의 의존성이 충돌되는 경우가 많았다. 하지만, 스프링 부트에서는 spring-boot-starter을 사용하면 종속된 모든 라이브러리를 알아서 땡겨오기 때문에, 종속성이나 호환 버전에 대해 최소한의 작업만 하면된다.
2. 내장 서버
Spring에서는 별도로 웹서버를 실행하여 애플리케이션의 빌드된 파일 경로를 지정해주어 실행하였다. 하지만, 스프링부트는 톰캣같은 웹서버(Tomcat)가 내장되어 있어서 쉽게 빌드 및 배포할 수 있다.
3. 어노테이션 (Annotation)
기본적으로 모든 빈(Bean) 설정을 XML이 아닌 어노테이션(annotation) 방식으로 처리한다. Spring boot의 main 메서드는 @SpringBootApplication 어노테이션은 @SpringBootConfiguration, @ComponentScan, @EnableAutoConfiguration 어노테이션을 축약한 형태이다.
4. 스프링 프레임워크 특징
- 경량 컨테이너로서 자바 객체를 직접 관리한다.
- POJO(Plain Old Java Object) 방식의 프레임워크이다.
: 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
- 제어반전(IoC: Inversion of Control) 기반
: 컨트롤의 제어권이 사용자가 아닌 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
- 의존성 주입(DI: Dependency Injection) 기반
: 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결한다.
- 관점 지향 프로그래밍(AOP: Aspect-Oriented Programming) 기반
: 트랜잭션, 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리 가능하다.
- 번거로운 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파일로 패키징 하여 웹 애플리케이션 실행 가능하다.
댓글