1.내장 서버를 이용해 별도의 설정 없이 독립 실행이 가능한 스프링 애플리케이션
2. 톰캣,제티,언더토우와 같은 웹 애플리케이션서버(WAS) 자체 내장
스프링 부트는 디폴트 내장 서버로 톰캣(Tomcat)을 사용하고 있습니다. 내장 웹 서버에 대한 설정을 자동으로
처리하기 때문에 스프링 부트 웹 사용자는 웹 사버와 관련된 설정을 하지 않아도 프로젝트 내부에 포함하게 됩니다.
제티(jetty), 언더토우(Undertow)와 같은 내장 웹 서버를 사용하기 위해서는 pom.xml에 설정 값을 작성하는 것만으로 쉽게
변경이 가능합니다.
3. 빌드 구성을 단순화하기 위한 '스프링 부트 스타터' 의존성 제공
스프링 부트에서 스타터(stater) 란설정을 자동화해 주는 모듈을 의미합니다. 프로젝트에서 설정해야 하는 다양한
의존성을 사전에 미리 정의해서 제공합니다. 따라서 프로젝트에서 설정해야 하는 다수의 의존성들을 스타터가 이미
포함하고 있기 때문에 스타터에 대한 의존성만 추가하면 프로젝트를 쉽게 진행할 수 있습니다.
4. XML 설정 없이 단순 자바 수준의 설정 방식 제공
스프링 부트는 XML에 설정을 작성할 필요 없이 자바 코드로 설정할 수 있습니다. XML은 문법이 틀리거나 선언이 선언을
잘못하면 원인을 찾기 힘듭니다. 자바 코드는 컴파일러의 도움을 받기 때문에 오타 등의 설정 오류를 미리 알 수 있습니다.
또한 클래스 단위로 설정하기 때문에 쉽게 관리할 수 있습니다.
5. 애플리케이션의 모니터링과 관리를 위한 스프링 액추에이터 제공
서비스를 운영하려면 서비스 개발뿐 아니라 서비스가 정상적으로 동작하고 있는지 상태를 모니터링해야 합니다.
스프링 액추에이터(Spring Actuator)는 스프링 부트 애플리케이션에서 제공하는 여러 가지 정보를 손쉽게 모니터링할 수 있도록
도와주는 라이브러리입니다. 배포한 기능이 장애가 있는지 모르는 상태로 몇 달이 흐르고 그로 인해 회사가 큰 손실을 얻는다면
그때 겪을 상실감은 상당합니다.
스프링부트 전에 스프링 웹 프로젝트 설정은 쉽지 않았습니다.
프레임워크의 모든 메이븐 의존성과 축소 보전을 정의해야 했고
의존성의 버전들도 정의해야 했고,스프링을 다른 버전으로 옮기고자 하실 때
버전이 계속 바뀌는 것을 확인할 수 있죠 계속 차례를 변경해야 했습니다.
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.2</version>
<relativePath/>
그러니 메이븐 의존성을 정의하면서 프레임워크 버전도 관리해야 했습니다.
또 여러분의 웹 애플리케이션 XML 파일도 정의해야 했죠
(/src/main/webapp/WEB-INF/web.xml)
웹.xml로 이동하시면, 여기있는 자바.xml에
간단한 servlets이 구성된 걸 보실 수 있습니다.
여러분은 여기 dispatcher servlet이라고 불리는 구성을 포함한 복잡한 구성을
보실수 있습니다.
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/todo-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
따라서 저걸 구성하셔야 합니다.
그다음 모든 빈을 정의하는 스프링 context XML을 정의하셔야 합니다
(src/main/webapp/WEB-INF/todo-servlet.xml)
(<context:compoment-scan base-package=”com.in28minutes”/>
todo-servlet.xml같은 뭔가를 만들어야 했고 컴포넌트 스캔을
정의하는 둥 해야 했죠
보시면 정의된 컴포넌트 스캔을 비롯 많은 다양한 것들이 있습니다.
/src/main/webapp/WEB-INF/todo-servlet.xml
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.in28minutes" />
<mvc:annotation-driven />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/views/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
그 외에도 톰캣을 설치하시거나, 톰캣 7 메이븐 플러그인을 사용해야 합니다.
여기 POM.XML에서 구성을 확인할 수 있습니다.
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<verbose>true</verbose>
<source>1.8</source>
<target>1.8</target>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<contextReloadable>true</contextReloadable>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
여기 우리가 톰캣 7 메이븐 플러그인을 구성해야 하는 걸 보실 수 있죠
그다음 애플리케이션을 구축하고 톰캣에서 실행해야 합니다.
마지막 단계처럼 스프링 부트를 사용한 애플리케이션 기획은 정말,정말 쉽습니다.
우리가 한 것은 스프링 초기자뿐입니다.
우리는 간단한 프로젝트를 만들었고 이 프로젝트가 몇 개 파일만 포함할 뿐이라는 것도 확인할 수 있습니다.
특정 프로젝트의 복잡성이 그다지 높지 않아서 애플리케이션을 빠르게 실행할 수 있습니다.
로그를 보시면 Tomcat도 마찬가지라고 생각됩니다.
스프링 부트는 마법처럼 매우 쉽게 웹 애플리케이션이나 rest API,혹은 여러분이 만들고 싶은 어떤 종류의 자바 애플리케이션도 쉽게 만들 수 있습니다.
'Spring > Spring Boot' 카테고리의 다른 글
빌드 도구 메이븐+Gradle (0) | 2023.02.19 |
---|---|
스프링부트 Spring boot 클라이언트요청 처리과정 MVP 패턴 개요 (0) | 2023.02.19 |