예전에 앱과의 통신을 위해 Java서블릿을 이용해 RESTFul 서버를 만들어 본적이 있었습니다.
그때 설정부터 배포까지 무척 어려웠던 걸로 기억이 나네요.
최근에 SpringBoot를 알게 되면서 이전에 어렵게 작업한 내용을 정말 5분만에 만들수 있다는 걸 알았습니다.
너무 편리하고 좋은 것 같습니다.
SpringBoot는 나중에 배포를 할 때 실행가능 한 Jar로 만들어서 실행만 시켜주면, 그냥 RESTFul 서버가 동작된다고 보시면 됩니다.
툴 설치부터 가장 간단한 기능제작까지 예제를 보시면 바로 이해가 갈 겁니다.
1. 사전설치
- jdk : 자바 개발할려면 필수겠죠. 혹시 설치 안됬다면 아래에서 설치
링크 : http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- IntelliJ : 개발도구는 이클립스 말고 인텔리제이 사용합니다.
링크 : https://www.jetbrains.com/idea/download/
Community 버전 설치하시며 됩니다. Spring이 지원되지 않는다고 나오는데 Gradle Java 프로젝트로 생성해서 수동으로 Spring Boot 추가해주면 문제없이 사용가능합니다.
2. IntelliJ 실행 후 새 프로젝트 생성
3. Gradle, Java 프로젝트 생성
4. GroupId, ArtifactId, Version을 임의대로 넣어주기
5. Use auto-import는 추가를 해주세요. Gradle파일이 수정되면 자동으로 import해주는 건데 편합니다.
Gradle JVM에 jdk가 설치된 폴더가 기본으로 세팅되어 있습니다.
6. 프로젝트 이름과 생성할 폴더 경로를 지정합니다.
7. 프로젝트가 생성된 후의 초기 화면입니다.
여기서 build.gradle 파일을 선택한 후 아래 내용을 넣어주세요. dependencies 에 spring boot가 추가되어 있어 해당 기능을 사용하게 해줍니다.
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
buildscript {
ext {
springBootVersion = '1.5.8.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
group = 'com.sample.springboot'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
8. 조금 있으면 자동으로 필요한 라이브러리를 Gradle이 다운을 받습니다.(자동 옵션을 켜두었다면)
그럼 좌측의 External Libraries에 springframework 관련 라이브러리가 보이면 정상입니다.
9. 혹 Gradle에서 수동으로 다시 받고 싶다면 아래와 같이 하면 됩니다.
10. 우측 상단의 갱신 버튼을 누르면 새로 갱신을 합니다.
11. main/java 밑에 Package를 만듭니다.
12. 저는 com.sample.springboot로 생성을 했습니다.
13. 생성한 패키지 밑에 Application을 만들 Java Class를 생성합니다.
14. Application.java 파일을 아래와 같이 수정합니다.
보시면 아시겠지만 SpringApplication.run(Application.class, args); 이 부분이 실행문의 다이죠. ^^
package com.sample.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
15. 아래 화면과 같이 controller, domain패키지를 생성하고 각각에 HelloController.java, Hello.java 를 생성합니다.
Hello.java
package com.sample.springboot.domain;
public class Hello {
private int code;
private String msg;
public Hello(int code, String msg) {
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
HelloController.java
package com.sample.springboot.controller;
import com.sample.springboot.domain.Hello;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "hello")
public class HelloController {
@GetMapping()
public Hello get() {
return new Hello(0, "Hello Spring Boot!");
}
}
16. 이제 실행하는 방법입니다.
Application.java 파일을 우클릭 한 후 Debug나 Run을 해주면 됩니다.
17. 그럼 아래와 같이 Spring로고가 뜨면서 하나의 RESTFul WAS 서버가 구동되었습니다.
18. 테스트는 구글크롬에서 아래와 같이 했습니다.
이제 끝이 났네요. ^^
상세한 설명은 드리지 않았습니다. 굳이 설명이 없어도 될 내용이긴 하네요. ㅎㅎ
간단히 설명을 드리면 localhost/hello 로 요청이 오게 되면 HelloController 의 get() 메서도로 진입된다고 보시면 됩니다.
크롬에서 실행하는 것은 Get방식이므로 @GetMapping() 을 해논 것이구요.
그리고 Hello 객체를 바로 리턴시키면 알아서 Json형식으로 리턴이 되게 됩니다.
다음에는 Post, Get, Put, Delete 호출 방식과 한 Controller 에서 여러 domain으로 응답하는 것 등을 올리도록 하겠습니다.
'웹 > WAS(Spring)' 카테고리의 다른 글
Spring Boot Param받기, Get/Post 사용, 응답 클래스 정의 (1) | 2017.11.08 |
---|
최근댓글