Spring Boot 특징 5가지

hyeokjin·2022년 2월 19일
0
  1. 자동설정 (AutoConfiguration)

스프링부트의 "자동설정" 방법이 등장하게 됩니다.

이는 클래스 패스(경로)에 특정 클래스가 있는지 감지한 후 자동으로 모든 설정을 구성합니다.

예컨데, 클래스 패스와 H2.jar에 JDBC 템플릿을 추가했다면 스프링 부트는 자동으로 인메모리 데이터베이스와 JDBC 템플릿을 자동으로 구성해줍니다

스프링부트의 자동설정은 200개 이상의 비슷한 설정을 해결하고 JAR 디펜던시를 검사하여 많은 기능을 자동으로 구성해줍니다.
(예를 들어 spring-mvc.jar가 존재한다면, 자동으로 DispatcherServle과 InternalViewResolver 등을 구성해줍니다.)

JPA와 Hibernate를 사용한다면 이와 관련된 설정을 구성해주고, spring-security를 사용한다면 마찬가지로 기본적인 어플리케이션 보안을 위한 basic security를 설정해줍니다.

자동설정은 기본적으로 비활성화 되있으며 구성 클래스에서 @EnableAutoConfiguration 또는 @SpringBootApplication 어노테이션을 사용하여 활성화할 수 있습니다.

(Main 클래스에 어노테이션을 사용하며 embedded 톰캣서버를 사용합니다.)

스프링부트 1.2 이후버전에서 @SpringBootApplication 어노테이션을 사용하는 것이 좋습니다. 다른 어노테이션을 결합하여 코드를 더 읽기 쉽게 만들어줍니다.

  1. Starter POMs

공통적인 기능들에 대한 자동설정으로 설정에 대한 어려움을 날려버리는 동안, Starter POMs는 프로젝트에서 디펜던시를 찾고 추가하는 것에 대한 어려움을 없애주었습니다.

Jackson을 지원하는 간단한 스프링 MVC 기반 REST 어플리케이션을 빌드하고 임베디드 컨테이너를 실행하려면 최소한
다음의 디펜던시가 필요합니다.

  • spring-core.jar
  • spring-web.jar
  • spring-webmvc.jar
  • jackson-databind.jar
  • tomcat-embed-core.jar
  • tomcat-embed-el.jar
  • tomcat-embed-logging-juil.jar

이러한 모든 디펜던시들을 추가하고 호환이 맞는 편리한 버전을 걱정하기보다, 그냥 하나만 추가하면 됩니다.
또한 모든 버전이 테스트되고 호환성의 문제가 없을 것이라고 확신합니다.

starter POMs를 사용하는 부수적인 이득은 당신이 모든 디펜던시들을 찾고 기억해낼 필요가 없다는 것 입니다.

웹 어플리케이션을 만드려고 한다면 단지 web starter 만을 추가하면 됩니다.

JPA 어플리케이션을 만들려고 한다면, 스프링 부트가 기억하고 사용하기 쉬운 공통 종속성 및 기능을 집계하여 JPA starter를 추가하면 됩니다.

요컨데, Starter POMs 혹은 starter 디펜던시는 또하나의 스프링 부트의 개발 단순화를 위한 멋진 특징입니다.

자동설정과 비슷하게 자주 사용하게 될것입니다.

  1. 스프링 부트 CLI

스프링 부트 CLI는 Command Line Interface의 약자로 스프링 부트프레임워크에서 제공하는 것입니다. 이는 Groovy 언어를 통해서 프로젝트를 구성하는 것입니다. 사실 Groovy와 스프링 부트는 완전히 상호 보완적입니다. Groovy는 자바 개발을 쉽게 하는 것이 목표이고, 스프링 부트도 마찬가지로 스프링 어플리케이션 개발을 쉽고 간단하게 개발하기 위한 도구입니다.

스프링부트의 자동설정과 starter 디펜던시가 스프링부트의 전체적인 기능이라면, CLI는 선택적인 것입니다. 또한 사용하기 위해 install 하는 과정이 필요합니다.

Groovy가 @RestController 및 @RequestMapping 어노테이션에 대해 어떻게 알고 있는지와 같이 이러한 모든 기능이 어떻게 작동하는지 궁금하다면 Spring Boot CLI가 자동 구성 및 스타터 POM 기능을 활용하여 응용 프로그램 코드 작성에만 집중할 수 있었음을 알려 드리겠습니다.

Spring Boot CLI는 @RestController 및 @RequestMapping이 사용 중임을 감지하고 작동하기 위해 클래스 경로에 추가해야하는 스타터 디펜던시를 파악합니다. 일련의 디펜던시들을 다운로드하면 자동설정이 시작되고 이를 사용하도록 합니다.

(예를 들어, spring-boot-web-starter가 읽어들여지면 spring-mvc.jar를 다운로드하고 DispatcherServlet을 자동으로 설정하고 스프링 MVC를 활성화합니다. )

  1. Actuator

Actuator는 또하나의 놀라운 스프링 부트의 특징입니다. 이는 스프링 부트 어플리케이션이 실행 중 무슨 일이 일어나고 있는지를 볼 수 있습니다. 자동 설정의 모든 장점들로 인해 응용프로그램 내부에 무엇이 있는지 알지 못할 위험이 있으며 해당 위험은 Spring Actuator에 의해 해결됩니다.

이는 프로덕션 환경에서 어플리케이션을 실행하는데 많은 통찰력과 메리트를 제공합니다. 예를 들어, Actuator를 사용하면 어플리케이션 컨텍스트에서 구성되는 Bean을 정확하게 찾을 수 있고, 자동 설정 결정사항, 응용프로그램에 사용하능한 환경변수, 시스템 변수, 커맨드라인 인수 등이 있습니다.

또한, 다양한 애플리케이션 지표와 함께 애플리케이션에서 처리 한 HTTP 요청의 흔적을 얻을 수도 있습니다. CPU 및 메모리 사용량, 가비지 콜렉션 세부 사항, 웹 요청 및 데이터 소스 사용량 등이 있습니다.

Spring Boot Actuator는 데이터를 검색하기위한 여러 엔드 포인트도 제공합니다

(예를 들어 : RESTful API를 사용하여 이 모든 것을 얻거나 원격 쉘 기능을 사용하여 애플리케이션 내부로 안전하게 들어가서 명령을 실행하여이 모든 정보를 얻을 수 있습니다.)

또한, JMX MBean을 사용하여 이 모든 기능을 제공하므로 JConsole과 같은 JMX 클라이언트를 사용하여 런타임에
제어 할 수 있습니다.

동시에 기밀 정보를 노출 할뿐만 아니라 위험하기 때문에 Actuator 엔드 포인트에 대한 액세스를 보호해야합니다.

예를 들어, 누구나 / shutdown 엔드 포인트를 사용하여 애플리케이션을 중지 할 수 있습니다. 하지만 걱정할 필요는 없습니다. 다른 Spring 애플리케이션과 마찬가지로 Spring Security를 사용하여 Actuator 엔드 포인트를 보호 할 수 있습니다.

  1. 스프링 부트 Initializer

Spring Initializer는 프로젝트 구조 관점에서 문제를 해결할 수 있는 스프링 부트의 기능입니다. Kotlin, Java, Groovy 또는 스프링 부트를 사용하여 Maven 혹은 Gradle 프로젝트를 생성할 수 있는 웹 어플리케이션입니다.

GUI의 Project MetaData 만 제공하면됩니다.
(예를 들어, 프로젝트 이름, 그룹, 아티팩트 등. 또한 큰 목록에서 스타터 종속성을 선택할 수 있습니다. 웹, JPA 또는 보안 스타터)

Spring Initializer 프로젝트는 https://start.spring.io/. 여기서 접근할 수 있습니다.

프로젝트를 생성하면, Zip 파일을 다운로드하여 IDE(Eclipse or IntelliJ 같은 개발도구)에서 프로젝트를 구성하면 됩니다. 그런다음 코드를 작성하면 됩니다.

Spring 프레임 워크의 많은 내부 세부 사항을 알지 않아도 Spring 기반 Java 어플리케이션을 쉽게 개발할 수 있도록 합니다.


출처 : https://sas-study.tistory.com/299

profile
노옵스를향해

0개의 댓글