본문 바로가기

Server Development/Spring Basic

Spring - Spring Boot

 

Spring Boot 란 스프링에서 좀 더 개발을 쉽게하게 하기 위해 개발된 것으로 Spring Framework에서는 직접 설정해야 했던 여러가지 기능을 더이상 개발자는 신경쓰지 않고 다른 것에 몰두하게 하기위한 목적으로 개발되었다.

 

 

특징을 살펴보자

  • 스프링 부트는 단독 실행할 수 있고, 상용화 수준의, 실행 가능한 스프링 기반 애플리케이션을 쉽게 생성할 수 있다.
  • 대부분의 스프링 부트 애플리케이션들은 적은 설정을 필요로 한다.
  • jar, war 배포 가능한 자바 애플리케이션 생성에 스프링부트를 사용할 수 있다.
  • 서버가 내장되어 war 배포없이 웹 어플리케이션을 실행할 수 있다.
  • 많이 사용되는 라이브러리를 모아놓은 starter pom파일을 제공하여 쉽게 라이브러리를 관리한다.

 

이 중에서도 두번째와 다섯번째 특징은 정말 와 닿았다.

스프링 부트를 사용하면서 또 스프링 프레임워크를 사용했던 사람으로써, 정말 편리해짐을 느꼈다.

따라서 스프링 프레임워크와 스프링 부트를 조금씩 비교해 가며 차이를 알아보려고 한다.

 

 

 

 

1) 내장된 서버

 

기존의 Spring은 아래의 과정을 거쳐 서버를 이용해 웹을 개발했다.

 

  • 1. 서버 설치
  • 2. 어플리케이션 생성
  • 3. 해당 어플리케이션에 대한 war 생성
  • 4. 서버에 등록
  • 5. 실행

 

Spring Boot는 어떻게 변했을까?

프로젝트 생성시 이미 서버가 프로젝트 안에 내장되어있다.

따라서 서버 설치 생략 가능, war 배포 대신 jar 배포 후 사용 가능하다는 장점이 있다.

 

 

 

 

2) Spring Boot Starter

Spring Boot 프로젝트를 생성하면 다음을 확인할 수 있을 것이다.

Maven으로 생성했다고 가정하고 pom.xml에서 확인할 수 있다.

 

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.4</version>
    <relativePath/>
</parent>

 

 

다음의 의미는 parent로 org.springframework.boot를 설정한다는 의미이다.

즉, 상속관계를 한번 살펴보면 아래와 같다.

 

  • Spring-boot-dependancies ->
  • Spring-boot-starter-parent ->
  • 내 프로젝트

 

Spring-boot-dependancies 는 버전관리를 해준다고 생각하면 된다. 예전에 어떤 라이브러리를 설치하면 항상 버전을 관리해주고 가끔 버전이 맞지않으면 오류가 났었는데 그런걸 방지하며 버전관리를 해준다.

Spring-boot-starter-parent 는 자바 버전, 설정파일 읽기, 플러그인 관리 등의 기능을 한다. 예를 들어, application.properties,  application.yml, application.yaml 이 해당 프로젝트안에 있으면 읽어들어 설정을 처리해준다.

내 프로젝트는 이들을 상속받아서 내가 저런것들을 따로 설정하지 않아도 작동한다. 훨씬 내가 해야할 기능들이 사라진 것이다.

 

또한, spring-webmvc.jar 등 기본적인 스프링 관련 jar파일도 설정되어있어 굳이 내가 따로 dependancy를 설정하지 않아도 사용가능하다.

 

 

 

 

3) Automatic Configuration

 

가장 고마운 기능이다.

Spring 개발시 정말 머리가 아픈게 설정파일 관리이다. 예를 들어, dipatcher는 어떻게 설정하고 xml은 어떤것을 읽고 bean은 어디에 등록하며 viewresolver 설정 등 너무 관리해야할 것이 많았다.

 

스프링부트 프로젝트 안에 main 자바 파일을 살펴보면

@SpringBootApplication 애너테이션이 있다. 이는 SpringBootConfiguration, ComponentScan, EnableAutoConfiguration 애니터에이션이 내장되어있는 것인데, 이를 통해, xml파일에 빈의 위치등을 설정했던 것이 필요가 없어지고 이 애너테이션들이 알아서 찾아서 설정하고 빈등록하고 해준다. 너무 감사하다.

쉽게 말하면 예전에는 dispatcherServlet(전체매핑), viewResolver(뷰매핑), HandlerMapping(컨트롤러매핑) 등을 xml파일로 설정하여 지정했지만 그럴 필요가 없이 자체적으로 매핑을 해준다.

 

 

 

4) Spring Boot Actuator

이 부분은 나중에 한번 다뤄보도록 하겠다.

 

 

 

 

'Server Development > Spring Basic' 카테고리의 다른 글

Spring - AOP  (0) 2023.04.02
Spring - Exception  (0) 2023.04.01
Spring - Log(LogBack)  (0) 2023.04.01
Spring - MVC  (0) 2023.03.24
Spring - IoC/DI  (0) 2023.03.22