본문 바로가기

Java/Spring

SpringBoot 신규 프로젝트 생성하기

개발환경


- OS : Windows 7 64bit

- 툴 : STS 3.7.2

- JDK : 1.8


Gradle 프로젝트를 생성하기 위해

이클립스(STS)에 Gradle 플러그인을 설치합니다.


STS기준으로 Dashboard 화면에서 IDE EXTENSIONS를 클릭합니다.


Gradle로 검색해서 플러그인을 설치합니다.





이제 신규 프로젝트를 생성해봅니다.









기본 프로젝트가 성공적으로 생성되었습니다.


gradle이 정상적으로 수행되는지 테스트를 해봅니다.

우선 build.gradle 파일을 살펴봅니다.



JDK는 1.8을 사용할껀데 gradle 파일안의 sourceCompatibility가 1.5로 되어 있습니다.

JDK 버전을 수정합니다.


AS-IS

sourceCompatibility = 1.5 


TO-BE

sourceCompatibility = 1.8

targetCompatibility = 1.8


Gradle 빌드를 진행해봅니다.




명령어로 clean build를 진행하여 빌드 테스트합니다.


콘솔 결과


:clean

:compileJava

:processResources

:classes

:jar

:assemble

:compileTestJava

:processTestResources

:testClasses

:test

:check

:build


BUILD SUCCESSFUL



빌드를 하면 build라는 폴더가 프로젝트에 생성됩니다.


libs에 있는 jar파일이 프로젝트 내용이며 이 jar를 통해 외부에 배포할 수 있습니다.



이제 SpringBoot를 사용해볼차례이니 브라우저에서 Spring.io로 접속합니다.

- http://projects.spring.io/spring-boot/#quick-start


디펜던시를 복사합니다.


build.gradle 파일에 복사한 내용을 붙여넣습니다.

아마 위 순서대로 따라왔다면 build.gradle의 디펜던시는 아래와 같습니다.



dependencies {    

    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'

    testCompile group: 'junit', name: 'junit', version: '4.+'

}


복사한 내용을 넣으면?


dependencies {

    compile("org.springframework.boot:spring-boot-starter-web:1.3.5.RELEASE")

    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'

    testCompile group: 'junit', name: 'junit', version: '4.+'

}


일관성있게 디펜던시 포맷을 수정합니다.


dependencies {

    compile("org.springframework.boot:spring-boot-starter-web:1.3.5.RELEASE")

    compile("commons-collections:commons-collections:3.2")

    testCompile("junit:junit:4.+")

}



build.gradle을 저장한 후 refresh all을 합니다.


프로젝트에 Gradle Dependency가 생성되고 

내부 lib를 확인하면 spring 및 tomcat, log등이 다운로드 된 것을 확인하실 수 있습니다.



드디어 SpringBoot를 만들어봅니다.

src/main/java에 package를 원하시는대로 만드시고 

예) com.sample.boot

이 경로에 Application이라는 클래스를 생성합니다.


package com.sample.boot;


public class Application {


}


아직은 아무것도 없는 클래스이지만 

이 프로젝트의 시작점이 이제 이곳이 될 예정입니다.



자바의 메인인 public static void main 함수를 추가합니다.

그리고 SpringBoot에 사용할 Application 설정들을 추가합니다.


package com.sample.boot;


import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class);

}

}


서버를 올린후 브라우저에서 특정 URL을 입력했을때 응답이 있으면 좋을테니

Controller를 만들어봅니다.


새 패키지를 만듭니다. 

예) com.sample.boot.test.controller 

이왕이면 Application이 포함된 com.sample.boot 패키지 하위로 만드는게 좋습니다.

@SpringBootApplication 어노테이션 내부에 @ComponentScan, @EnableAutoConfiguration이 포함되어 있어서 Application 패키지 하위의 경로의 클래스들을 자동으로 스캔합니다.



Controller 코드 내용


package com.sample.boot.test.controller;


import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;


@Controller

public class SampleController {

@RequestMapping(path = "/")

@ResponseBody

public String hello() {

return "hello world";

}

}

지금은 String만 리턴하는거라

@Controller + @ResponseBody말고 @RestController만 써도 됩니다.


이제 한번 서버를 띄워보겠습니다.

Application클래스로 돌아와 Run 버튼을 클릭합니다.


Java Application으로 하셔도 되고 Spring Boot App으로 수행해도됩니다.


Run을 하면 SpirngBoot 콘솔 로그와 함께 서버가 시작됩니다.




브라우저에서 localhost:8080을 입력해봅니다.


 hello world가 잘 찍혔습니다.


그러면 이제 View 페이지를 직접 띄워보고 싶으니 View를 만들어봅니다.

SpringBoot는 기본적으로 타임리프(Thymeleaf)를 지원하므로 이 녀석을 써보겠습니다.


우선 새로운 디펜던시를 추가합니다.

- http://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf/1.3.5.RELEASE

- compile("org.springframework.boot:spring-boot-starter-thymeleaf:1.3.5.RELEASE")


새롭게 디펜던시를 추가했으니 Gradle 메뉴에서 refresh all을 수행합니다.



src/main/resources에 templates라는 폴더를 만듭니다.

아래에 home.html이라는 html 파일을 생성합니다.





SampleController 클래스에 View를 보여줄 메서드를 만듭니다.


@RequestMapping(path = "/list")

public String show(Model model) {

model.addAttribute("hello", "안녕? 여기는 홈화면이야");

return "home";

}


이번에는 Model에 View에 보여줄 데이터를 담고

return값으로 View name을 전달합니다.



(타임리프는 HTML 태그에 엄격해서 닫혀있지 않는 태그가 있으면 파싱 에러를 발생시킵니다.

ex. <meta charset="UTF-8"> (X)

<meta charset="UTF-8"></meta> (O)) 




ViewResolver 설정없이 src/main/resources/templates 경로 아래에 타임리프 html, 일반 html을 두면 알아서 찾아갑니다.


javascript는 src/main/resources/public 아래에 두면되고

image나 css는 src/main/resources/static 아래에 두면 됩니다.


지금은 DB 연동을 하지 않았지만 DB 연동이나 서버 설정에 필요한 프로퍼티는

src/main/resources에 application.properties를 추가하여 설정을 세팅할 수 있습니다.


이만, 즐겁게 웹프로그래밍 하시길~ 














'Java > Spring' 카테고리의 다른 글

Spring Endpoint Health 설정  (0) 2016.07.19
ControllerAdvice  (0) 2016.07.18
SpringBoot Profile(환경별 설정 파일 구별)  (0) 2016.06.07
SpringBoot JSP를 Jar에 넣기  (0) 2016.06.01
SpringBoot JSP View 설정하기  (1) 2016.05.30