Spring Boot 프레임워크의 주요 구성 요소 및 내부

이전 게시물 “Spring Boot 소개”에서 Spring Boot 기초에 대해 논의했습니다. 이제 “Spring Boot의 주요 구성 요소는 무엇이며” “Spring Boot가 어떻게 작동하는지”에 대해 논의하겠습니다.

Spring Boot Framework의 주요 구성 요소

Spring Boot Framework에는 주로 네 가지 주요 구성 요소가 있습니다.

  • Spring Boot Starters
  • Spring Boot AutoConfigurator
  • Spring Boot CLI
  • Spring Boot Actuator

참고: 이 네 가지 주요 구성 요소 외에도 두 개의 Spring Boot 구성 요소가 더 있습니다.

  • Spring Initilizr
  • Spring Boot IDE

새로운 Spring Boot 프로젝트를 빠르게 시작하기 위해 “Spring Initializr” 웹 인터페이스를 사용할 수 있습니다. Spring Initializr URL: https://start.spring.io. Eclipse IDE, IntelliJ IDEA, Spring STS Suite 등 많은 Spring Boot IDE가 있습니다. 이 두 가지 구성 요소에 대해서는 다음 게시물에서 논의하겠습니다. 이제 Spring Boot의 네 가지 구성 요소에 대해 하나씩 자세히 알아보겠습니다.

스프링 부트 스타터

스프링 부트 스타터는 스프링 부트 프레임워크의 주요 기능 또는 구성 요소 중 하나입니다. 스프링 부트 스타터의 주요 책임은 일련의 공통 또는 관련된 종속성을 단일 종속성으로 결합하는 것입니다. 이 문장을 한 예를 통해 자세히 살펴보겠습니다. 예를 들어, 톰캣 웹 서버를 사용하여 스프링 웹 애플리케이션을 개발하려고 합니다. 그런 다음 Maven의 pom.xml 파일이나 Gradle의 build.gradle 파일에 다음과 같은 최소한의 jar 종속성을 추가해야 합니다.

  • Spring core Jar 파일(spring-core-xx.jar)
  • Spring Web Jar 파일(spring-web-xx.jar)
  • Spring Web MVC Jar 파일(spring-webmvc-xx.jar)
  • Servlet Jar 파일(servlet-xx.jar)

데이터베이스 관련 항목을 추가하려면 Spring JDBC jar 파일, Spring ORM jar 파일, Spring Transaction Jar 파일 등과 같은 데이터베이스 관련 jar 파일을 추가해야 합니다.

  • Spring JDBC Jar 파일(spring-jdbc-xx.jar)
  • Spring ORM Jar 파일(spring-orm-xx.jar)
  • Spring Transaction Jar 파일(spring-transaction-xx.jar)

우리는 빌드 파일에서 많은 종속성을 정의해야 합니다. 이는 개발자에게 매우 지루하고 번거로운 작업입니다. 또한 빌드 파일의 크기를 증가시킵니다. 빌드 파일에서 이러한 많은 종속성 정의를 피하는 해결책은 무엇일까요? 그 해결책은 Spring Boot Starter 구성 요소입니다. Spring Boot Starter 구성 요소는 모든 관련 JAR 파일을 단일 JAR 파일로 결합하여 빌드 파일에는 단 하나의 JAR 파일 종속성만 추가할 수 있도록 합니다. 위의 4개의 JAR 파일을 빌드 파일에 추가하는 대신, “spring-boot-starter-web” JAR 파일 하나만을 추가해야 합니다. “spring-boot-starter-web” JAR 파일 종속성을 빌드 파일에 추가하면 Spring Boot Framework가 필요한 모든 JAR 파일을 자동으로 다운로드하고 프로젝트 클래스패스에 추가합니다. 마찬가지로, “spring-boot-starter-logging” JAR 파일은 “jcl-over-slf4j, jul-to-slf4j, log4j-over-slf4j, logback-classic”과 같은 종속성 JAR 파일을 프로젝트 클래스패스에 로드합니다.

Spring Boot Starter의 주요 장점

  • Spring Boot Starter는 많은 종속성을 정의하는 것을 간소화하여 프로젝트 빌드 종속성을 단순화합니다.
  • Spring Boot Starter는 프로젝트 빌드 종속성을 단순화합니다.

Spring Boot Starter 구성 요소에 대해 이것으로 충분합니다. 다음 포스트에서는 몇 가지 Spring Boot 예제와 함께 더 자세히 알아보겠습니다.

Spring Boot AutoConfigurator

다른 중요한 Spring Boot Framework의 주요 구성 요소는 Spring Boot AutoConfigurator입니다. 대부분의 Spring IO Platform (Spring Framework) 비평가들은 “Spring 기반 응용 프로그램을 개발하려면 많은 구성이 필요하다(또는 XML 구성 또는 어노테이션 구성)”라고 생각합니다. 그렇다면 이 문제를 어떻게 해결할까요? 이 문제의 해결책은 Spring Boot AutoConfigurator입니다. Spring Boot AutoConfigurator의 주요 책임은 Spring 구성을 줄이는 것입니다. Spring Boot에서 Spring 응용 프로그램을 개발한다면 단일 XML 구성을 정의할 필요가 없으며 거의 또는 전혀 어노테이션 구성이 필요하지 않습니다. Spring Boot AutoConfigurator 구성 요소가 해당 정보를 제공하도록 처리합니다. 예를 들어, Spring IO Platform을 사용하여 Spring MVC 응용 프로그램을 선언하려면 뷰, 뷰 리졸버 등과 같은 많은 XML 구성을 정의해야 합니다. 그러나 Spring Boot Framework를 사용한다면 해당 XML 구성을 정의할 필요가 없습니다. Spring Boot AutoConfigurator가 처리합니다. 프로젝트 빌드 파일에서 “spring-boot-starter-web” jar 파일을 사용한다면 Spring Boot AutoConfigurator가 자동으로 뷰, 뷰 리졸버 등을 해결합니다. 또한 Spring Boot는 어노테이션 구성의 정의를 줄입니다. 클래스 수준에서 @SpringBootApplication 어노테이션을 사용하면 Spring Boot AutoConfigurator가 Java 클래스 바이트 코드에 필요한 모든 어노테이션을 자동으로 추가합니다. Spring Boot 문서를 통해 @SpringBootApplication에 대한 다음 정의를 찾을 수 있습니다.

@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication

즉, @SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiration. 이것이 Spring Boot AutoConfigurate 구성 요소에 대한 모든 것입니다. 다음 게시물에서 몇 가지 Spring Boot 예제를 사용하여 자세히 논의할 것입니다. 참고:-

  • 간단히 말해서, Spring Boot Starter는 빌드의 종속성을 줄이고 Spring Boot AutoConfigurator는 Spring 구성을 줄입니다.
  • Spring Boot Starter가 Spring Boot AutoConfigurator에 종속성이 있고, Spring Boot Starter가 Spring Boot AutoConfigurator를 자동으로 트리거한다는 것을 논의했습니다.

Spring Boot CLI

Spring Boot CLI(Command Line Interface)는 명령 프롬프트에서 Spring Boot 응용 프로그램을 실행하고 테스트하기 위한 Spring Boot 소프트웨어입니다. CLI를 사용하여 Spring Boot 응용 프로그램을 실행하면 내부적으로 모든 종속성을 해결하고 응용 프로그램을 실행하기 위해 Spring Boot Starter 및 Spring Boot AutoConfigurate 구성 요소를 사용합니다. 심지어 간단한 Spring Boot CLI 명령으로 Spring 웹 응용 프로그램을 실행할 수 있습니다. Spring Boot CLI는 명령 프롬프트에서 Groovy 스크립트를 실행하기 위한 새로운 “spring” 명령을 소개했습니다. spring 명령 예시:

spring run HelloWorld.groovy

여기 HelloWorld.groovy가 Groovy 스크립트 파일 이름입니다. Java 소스 파일 이름에는 *.java 확장자가 있듯이 Groovy 스크립트 파일에는 *.groovy 확장자가 있습니다. “spring” 명령은 HelloWorld.groovy를 실행하고 출력을 생성합니다. Spring Boot CLI 구성 요소에는 CLI 설치, CLI 설정, 간단한 Spring Boot 응용 프로그램 개발 및 테스트와 같은 여러 단계가 필요합니다. 그래서 우리는 Spring Boot 예제와 함께 자세히 논의할 다른 게시물을 할애할 것입니다. Spring Boot CLI에 대한 다음 게시물을 참조하십시오.

Spring Boot 액추에이터

Spring Boot 액추에이터 구성 요소는 많은 기능을 제공하지만, 두 가지 주요 기능은

  • Spring Boot 응용 프로그램에 관리 엔드포인트 제공
  • Spring Boot 응용 프로그램 메트릭스입니다.

CLI를 사용하여 Spring Boot 웹 응용 프로그램을 실행할 때 Spring Boot 액추에이터가 자동으로 호스트 이름을 “localhost”로 및 기본 포트 번호를 “8080”으로 제공합니다. 이 응용 프로그램에는 “https://localhost:8080/” 엔드포인트를 사용하여 액세스할 수 있습니다. 실제로 Spring Boot 액추에이터를 사용하여 관리 엔드포인트를 나타내기 위해 GET 및 POST와 같은 HTTP 요청 메서드를 사용합니다. 다음 게시물에서 Spring Boot 액추에이터에 대해 좀 더 자세히 논의할 것입니다.

Spring Boot Framework 내부

Spring Boot Framework는 빌드 종속성, Spring Configuration 등을 어떻게 줄이는지 이해하는 것이 항상 권장됩니다. Spring Boot가 어떻게 작동하는지에 대해 알고 있다면 Groovy 프로그래밍 언어에도 대부분 알고 있을 것입니다. Groovy에서는 몇 가지 import를 추가할 필요가 없으며 Groovy 프로젝트에 일부 종속성을 추가할 필요도 없습니다. Groovy 스크립트를 Groovy 컴파일러(groovyc)를 사용하여 컴파일할 때 자동으로 모든 기본 import 문을 추가하고 컴파일합니다. 마찬가지로, Groovy 프로그래밍 언어에는 Groovy 프로젝트 클래스 패스에 필요한 모든 jar 파일을 해결하고 추가하는 JAR 종속성 해결자가 포함되어 있습니다. Spring Boot Framework는 내부적으로 Groovy를 사용하여 기본 import 문, Application main() 메서드 등과 같은 몇 가지 기본값을 추가합니다. CLI 명령 프롬프트에서 Groovy 스크립트를 실행할 때 이 main() 메서드를 사용하여 Spring Boot 애플리케이션을 실행합니다.

Grape

포도는 내장된 종속성 해결 엔진입니다. 포도는 Groovy에 내장된 JAR 종속성 관리자입니다. 포도를 사용하면 프로젝트 클래스패스에 Maven 저장소 종속성을 빠르게 추가하여 빌드 파일 정의를 줄일 수 있습니다. Spring Boot 프레임워크 프로그래밍 모델은 주로 Groovy 프로그래밍 모델에서 영감을 받았습니다. Spring Boot 프레임워크는 내부적으로 두 가지 주요 구성 요소에 종속됩니다: Groovy 및 포도. 더 많은 세부 정보는 Grape 문서 https://docs.groovy-lang.org/latest/html/documentation/grape.html에서 확인할 수 있습니다. Spring 구성 요소 및 내부에 관한 내용은 여기까지입니다. 다음 게시물에서는 몇 가지 Spring Boot 예제를 사용하여 이러한 구성 요소를 자세히 살펴보겠습니다. 질문이 있으면 댓글을 남겨주세요.

Source:
https://www.digitalocean.com/community/tutorials/key-components-and-internals-of-spring-boot-framework