스프링부트를 시작하기 전에 많은 낯선 용어로 어려움을 겪었다.
먼저 스프링부트란 무엇인가?
스프링 프레임워크를 사용한 프로젝트를 아주 간편하게 SETUP 할 수 있는 스프링프레임워크의 서브프로젝트이다.
- WAR파일을 배포할 필요없이 내장된 Tomcat, Jetty, Unertow 를 이용해 실행만 시키면 내장 서버에 배포되어 바로 실행된다.
- 많이 사용하는 라이브러리를 모아놓은 (Starter)POM 파일로 관리가 쉽다.
- 자동설정으로 인해 더 이상 XML 설정이 필요하지 않다.
그렇다면 스프링부트를 왜 사용할까?
위에서도 장점을 설명했지만, 기존의 스프링 프레임워크를 이용한 개발 구축은 많은 XML 설정 파일등의 작성량을 요구했다.
그래서 잘 만들어놓은 설정파일을 복사해서 사용하거나 검색을 통해 얻은 정보를 그대로 복사해서 사용하는 경우가
많았는데, 실상 특별한 경우의 설정을 제외하고는 거의 항상 동일한 옵션을 가져가는 것이 대부분이었다.
그러한 부분에서 스프링 부트는 반복되는 개발환경 구축에 대한 작업을 줄여주고 빠르고 쉽게 프로젝트를 작성할 수
있도록 도와준다고 할 수 있다.
스프링부트 준비사항
1. 스프링부트 CLI
스프링부트 CLI는 전통과는 다소 거리가 있지만 흥미로운 스프링 애플리케이션 개발방법을 제공한다.
CLI는 개발자가 코드 작성에만 집중할 수 있도록 스타터 의존성과 자동 구성을 활용하는 명령줄 인터페이스이다.
2. Spring Initializr로 스프링 부트 프로젝트 구성
스프링부트 CLI는 설정 작업의 상당 부분을 없앴지만, 전통적인 자바 프로젝트 구조가 더 마음에 든다면
Spring Initializr를 살펴보는 것도 좋다.
Spring Initializr는 스프링 부트 프로젝트 구조를 만드는 웹 애플리케이션이다. 기본적인 프로젝트 구조와
코드를 빌드하는데 필요한 메이븐이나 그레이들 빌드 명세를 만든다.
Spring Initializr는 다음 방법들로 사용할 수 있다.
- 웹 기반 인터페이스
- Spring Tool Suite(STS)
- IntelliJ IDEA
- 스프링부트 CLI
3. 의존성 관리를 도와주는 빌드 툴
Maven 또는 Gradle
빌드툴 이란?
스프링부트에서는 빌드 도구로 메이븐(Maven)이나 그레이들(Gradle)을 사용할 수 있다.
간단한 프로그램은 Visual Studio나 Eclipse에서 실행 명령을 내리거나 gcc로 make하면 동작했지만,
수많은 라이브러리를 관리하고 컴파일하기 위해서는 별도의 툴이 필요하게 되었다.
그래서 Ant가 나왔고, 그것을 더 편하게 쓰기 위해 Maven, Gradle이 나오게 된 것이다.
스프링부트에서 사용하는 뷰(View)
스프링부트에서는 여러가지 뷰가 사용가능하다.
- FreeMaker
- Groovy
- Thymeleaf
- Velocity
- JSP
- ....
하지만 요즘은 자바 웹 서비스의 경우 REST API 서버로만 이용하고, View쪽은 자바스크립트 등을 이용해
따로 개발하는 경우가 많다. 아이폰, 안드로이드 앱을 만들 때도 API로 개발하는 것이 여러모로 좋다.
그래도 그 중에서 3가지 정도만 살펴보자면
- JSP : 표준인 JSP지만, 스프링 부트에서 어떻게 보면 가장 사용하기 힘든 View이다. 다른 것보다 설정할 것이 많고, 제약사항이 많다고 한다.
- Velocity : 빠르고, 우리나라 현업에서 많이 사용된다고 한다.
- Thymeleaf : 스프링부트 초반에 유일하게 지원했던 템플릿 엔진이다.
※ 참조 :
http://mkil.tistory.com/266
http://millky.com/@origoni/post/1144?language=ko_kr
http://blog.woniper.net/255
'Programming > Java & JSP & Spring' 카테고리의 다른 글
톰캣(Tomcat)과 아파치(Apache) 차이 (0) | 2017.07.17 |
---|---|
JPA(Java Persistence API)란? (0) | 2017.07.14 |
[Spring] 기본 초기 셋팅 (0) | 2017.07.05 |
[Java] 스트링 비교 (equals와 ==의 차이) (0) | 2017.07.05 |
Spring Boot(스프링부트)를 왜 사용해야 하는가? (0) | 2017.07.05 |