스프링을 처음 접했을때 Spring과 Spring Boot의 차이점을 몰라 Spring Boot도 많이 쓴다던데 이것도 배워야 하나 라고 생각했었습니다. 스프링을 쉽게 시작하기 위해 만들어진게 Spring Boot인데 말이죠😹
오늘은 Spring Boot란 무엇이고 왜 사용하는지, Spring Boot를 사용함으로써 얼마나 쉽게 프로젝트를 시작할 수 있는지에 대해 정리해보겠습니다.
스프링 부트란?
스프링 부트는 스프링 기반 애플리케이션을 쉽게 시작할 수 있는 프로젝트입니다.
옛날에는 스프링은 설정이 반이다 라는 말을 들었을 정도로 수많은 XML 파일(web.xml, root-context.xml, servlet-context.xml) 을 통해 라이브러리를 설정하고 호환성을 맞춰야 했습니다.
이미 스프링 설정에 익숙해진 개발자라면 불편함이 없겠지만 새로 배우는 입장에서는 두려운 존재였습니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>egovframe.xplatform.uiadaptor.template</display-name>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>HTMLTagFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml,
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
web.xml 파일 일부
처음 스프링을 배우는 입장에서 XML 파일 마주치게 된다면 시작부터 막막해지게 됩니다.
또 문자열 기반으로 설정하기 때문에 오타가나도 IDE에서 잡아줄 수 없기때문에 디버깅이 쉽지않습니다.
이 문제를 해결하기 위해 등장한게 스프링 부트(Spring Boot)로, 복잡한 설정 없이 스프링 애플리케이션을 바로 시작할 수 있습니다.
(개념이 사라진게 아니므로 원래 XML 파일에서 설정하던 역할은 이해하고 있어야합니다.)
스프링 부트의 기능
이것 외에도 스프링은 다양한 기능을 제공해줌으로써 개발자가 집중해야 하는 것에 집중할 수 있도록 도와주는 역할을 합니다.
공식 홈페이지를 통해 더 자세한 내용을 확인할 수 있습니다.
독립형 Spring 애플리케이션 생성, 내장 WAS 제공(Tomcat, Jetty)
스프링 부트는 Tomcat을 내장하고 있으므로 별도 설정없이 애플리케이션을 바로 실행할 수 있습니다.
@SpringBootApplication 어노테이션이 선언되어 있는 클래스의 mail()메소드를 실행하는 것만으로 서버를 구동시킬 수 있습니.(WAR 파일을 배포할 필요 없음)
라이브러리 버전 관리 자동화
사용하는 라이브러리는 모두 버전이 존재합니다. 기존에는 버전을 정확히 명시해줘야하고 버전간 호환성을 조심해야 했지만 스프링 부트는 버전을 지정하지 않아도 적합한 라이브러리를 자동으로 찾아줍니다.
애노테이션을 이용한 설정의 자동화
이전의 XML을 통한 복잡한 설정들을 애노테이션을 이용해 자동으로 등록할 수 있습니다.
Spring Boot 프로젝트를 생성하면 @SpringBootApplication 애노테이션이 붙어있고
쫓아가보면 @SpringBootConfiguration, @EnableAutoConfiguration을 확인할 수 있습니다.
@EnableAutoConfiguration 애노테이션은 스프링에서 자주 사용하는 설정을 자동으로 등록해줍니다.
스프링 부트 시작하기
start.spring.io 사이트를 통해 손쉽게 스프링 부트 애플리케이션을 생성할 수 있습니다.
Project, Language 등 프로젝트 정보를 입력하고 Dependencies를 추가합니다.
"GENERATE" 버튼을 클릭하면 스프링 부트 애플리케이션이 생성되고 다운로드 받은 후 Intellij로 폴더를 Open 합니다.
src/main/java/package명에 있는 @SpringBootApplication 클래스를 실행하면 스프링 애플리케이션 실행됩니다!
http://127.0.0.1:8080/ 으로 접속했을때 에러 페이지가 나타나면 성공입니다.
댓글로 알려주시면 감사하겠습니다. 🙏
참고 글
[Spring] 스프링 부트(Spring Boot)란?
[Spring Boot] 스프링 부트란 무엇인가?
[Spring] SpringBoot 소스 코드 분석하기, SpringBoot의 장점과 특징 - (1)
'Spring' 카테고리의 다른 글
[Spring] Servlet, DispatcherServlet 이란 (0) | 2020.06.22 |
---|---|
[Spring] 스프링 설정 - web.xml, root-context.xml, servlet-context.xml 역할(Servlet, DispatcherServlet이란) (7) | 2020.06.21 |