SpringBoot 시작하기 1. SpringBoot에서 Hello World REST API
12291 단어 SpringBoot자바
소개
지난번 SpringCLI에서 HelloWorld REST API를 만들었기 때문에
이번에는 Eclipse 프로젝트에서 Spring 프로젝트를 작성하여 Hello World REST API 앱을 작성해 본다.
환경
소프트웨어
버전
OS
Windows10 Pro
자바
JDK12
이클립스
2020-12 M1
SpringBoot
2.4.0
Spring Tool Suite (STS)
4.8.1
구현
1. Eclipse 얻기
우선은 Eclipse의 입수로부터.
Pleiades 페이지에서 Eclipse 최신 버전 (2020-12)을 얻습니다.
이 Eclipse에는 처음부터 Spring Tool Suite (STS) 4.8.1 플러그인이 들어있다.
2. Spring용 프로젝트 작성
Eclipse를 시작하고 패키지 탐색기에서 마우스 오른쪽 버튼 클릭 → 새로 만들기 → 기타를 선택합니다.
아래의 윈도우가 표시되므로 [Spring Boot] → [Spring Starter Project]를 선택.
다음 프로젝트 설정.
이름을 「HelloSpring」로 해, 형태에 Gradle를 지정.
그 외, 이하와 같다.
종속 라이브러리 지정.
이번에는 HelloWorld를 반환하는 REST API 만 있기 때문에
특히 필요한 도서관은 없다.
[완료] 버튼을 누릅니다.
그러면 다음 구성의 프로젝트 리소스가 생성됩니다.
HelloSpringApplication.java
와 build.gradle
의 내용은 이런 느낌.
HelloSpringApplication.javapackage com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloSpringApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
}
}
build.gradleplugins {
id 'org.springframework.boot' version '2.4.0'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '12'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
build.gradle에는 SpringBoot 플러그인과 종속성이 추가되었습니다.
3. REST Controller 클래스 작성
HTTP 요청을 받아들이고 "Hello World!"와 "Hello SpringBoot!"를 반환하는 사용자 엔드 포인트 인 Controller 클래스를 만듭니다.
지난번로 만든 REST Controller 클래스를 유용.
HelloController.javapackage com.example.demo;
@RestController
public class HelloController {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
@RequestMapping("/sb")
public String helloSp() {
return "Hello SpringBoot!";
}
}
그러면 @RestController
와 @RequestMapping
를 참조 할 수없는 오류가 발생합니다.
Spring Boot 단체로는 최소한의 Spring 어플리케이션용 클래스 밖에 들어 있지 않다고 하는 것 같다.@RestController
와 @RequestMapping
는 SpringMVC의 주석입니다.
REST API를 만들고 싶다면 라이브러리 spring-boot-starter-web
를 종속성에 추가하는 것이 좋습니다.
위의 SpringMVC 클래스군에 가세해 Tomcat나 Jackson과 같은 라이브러리도 붙어 온다는 것.
아무래도 REST API 작성을 위해서 필요한 것이 갖추어질 것 같은 느낌의 것이므로 조속히 Gradle의 설정 파일에 의존관계를 추가.
gradle.builddependencies {
implementation 'org.springframework.boot:spring-boot-starter'
//↓これを追加
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
방금 전 HelloControllerクラス
에 import 문을 추가하여 완성.
HelloController.javapackage com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
@RequestMapping("/sb")
public String helloSp() {
return "Hello SpringBoot!";
}
}
4. 실행
조속히 Spring 어플리케이션을 움직여 보자.
gradle bootRunタスク
실행.
Eclipse 위에서 아래를 더블 클릭하면 된다.
그러면 콘솔에 다음과 같이 표시됩니다.
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :bootRunMainClassName UP-TO-DATE
> Task :bootRun
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.4.0)
2020-11-23 13:46:19.374 INFO 7004 --- [ main] com.example.demo.HelloSpringApplication : Starting HelloSpringApplication using Java 12.0.2 on xxxxxxxx with PID 7004 (M:\develop\tools\eclipse\pleiades-2020-12\workspace\HelloSpring\build\classes\java\main started by xxxxx in M:\develop\tools\eclipse\pleiades-2020-12\workspace\HelloSpring)
2020-11-23 13:46:19.376 INFO 7004 --- [ main] com.example.demo.HelloSpringApplication : No active profile set, falling back to default profiles: default
2020-11-23 13:46:20.040 INFO 7004 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2020-11-23 13:46:20.045 INFO 7004 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-11-23 13:46:20.046 INFO 7004 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
2020-11-23 13:46:20.088 INFO 7004 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-11-23 13:46:20.088 INFO 7004 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 689 ms
2020-11-23 13:46:20.177 INFO 7004 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-11-23 13:46:20.273 INFO 7004 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-11-23 13:46:20.279 INFO 7004 --- [ main] com.example.demo.HelloSpringApplication : Started HelloSpringApplication in 1.115 seconds (JVM running for 1.335)
이 상태에서 다음에 액세스하십시오.
소프트웨어
버전
OS
Windows10 Pro
자바
JDK12
이클립스
2020-12 M1
SpringBoot
2.4.0
Spring Tool Suite (STS)
4.8.1
구현
1. Eclipse 얻기
우선은 Eclipse의 입수로부터.
Pleiades 페이지에서 Eclipse 최신 버전 (2020-12)을 얻습니다.
이 Eclipse에는 처음부터 Spring Tool Suite (STS) 4.8.1 플러그인이 들어있다.
2. Spring용 프로젝트 작성
Eclipse를 시작하고 패키지 탐색기에서 마우스 오른쪽 버튼 클릭 → 새로 만들기 → 기타를 선택합니다.
아래의 윈도우가 표시되므로 [Spring Boot] → [Spring Starter Project]를 선택.
다음 프로젝트 설정.
이름을 「HelloSpring」로 해, 형태에 Gradle를 지정.
그 외, 이하와 같다.
종속 라이브러리 지정.
이번에는 HelloWorld를 반환하는 REST API 만 있기 때문에
특히 필요한 도서관은 없다.
[완료] 버튼을 누릅니다.
그러면 다음 구성의 프로젝트 리소스가 생성됩니다.
HelloSpringApplication.java
와 build.gradle
의 내용은 이런 느낌.
HelloSpringApplication.javapackage com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloSpringApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
}
}
build.gradleplugins {
id 'org.springframework.boot' version '2.4.0'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '12'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
build.gradle에는 SpringBoot 플러그인과 종속성이 추가되었습니다.
3. REST Controller 클래스 작성
HTTP 요청을 받아들이고 "Hello World!"와 "Hello SpringBoot!"를 반환하는 사용자 엔드 포인트 인 Controller 클래스를 만듭니다.
지난번로 만든 REST Controller 클래스를 유용.
HelloController.javapackage com.example.demo;
@RestController
public class HelloController {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
@RequestMapping("/sb")
public String helloSp() {
return "Hello SpringBoot!";
}
}
그러면 @RestController
와 @RequestMapping
를 참조 할 수없는 오류가 발생합니다.
Spring Boot 단체로는 최소한의 Spring 어플리케이션용 클래스 밖에 들어 있지 않다고 하는 것 같다.@RestController
와 @RequestMapping
는 SpringMVC의 주석입니다.
REST API를 만들고 싶다면 라이브러리 spring-boot-starter-web
를 종속성에 추가하는 것이 좋습니다.
위의 SpringMVC 클래스군에 가세해 Tomcat나 Jackson과 같은 라이브러리도 붙어 온다는 것.
아무래도 REST API 작성을 위해서 필요한 것이 갖추어질 것 같은 느낌의 것이므로 조속히 Gradle의 설정 파일에 의존관계를 추가.
gradle.builddependencies {
implementation 'org.springframework.boot:spring-boot-starter'
//↓これを追加
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
방금 전 HelloControllerクラス
에 import 문을 추가하여 완성.
HelloController.javapackage com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
@RequestMapping("/sb")
public String helloSp() {
return "Hello SpringBoot!";
}
}
4. 실행
조속히 Spring 어플리케이션을 움직여 보자.
gradle bootRunタスク
실행.
Eclipse 위에서 아래를 더블 클릭하면 된다.
그러면 콘솔에 다음과 같이 표시됩니다.
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :bootRunMainClassName UP-TO-DATE
> Task :bootRun
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.4.0)
2020-11-23 13:46:19.374 INFO 7004 --- [ main] com.example.demo.HelloSpringApplication : Starting HelloSpringApplication using Java 12.0.2 on xxxxxxxx with PID 7004 (M:\develop\tools\eclipse\pleiades-2020-12\workspace\HelloSpring\build\classes\java\main started by xxxxx in M:\develop\tools\eclipse\pleiades-2020-12\workspace\HelloSpring)
2020-11-23 13:46:19.376 INFO 7004 --- [ main] com.example.demo.HelloSpringApplication : No active profile set, falling back to default profiles: default
2020-11-23 13:46:20.040 INFO 7004 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2020-11-23 13:46:20.045 INFO 7004 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-11-23 13:46:20.046 INFO 7004 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
2020-11-23 13:46:20.088 INFO 7004 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-11-23 13:46:20.088 INFO 7004 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 689 ms
2020-11-23 13:46:20.177 INFO 7004 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-11-23 13:46:20.273 INFO 7004 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-11-23 13:46:20.279 INFO 7004 --- [ main] com.example.demo.HelloSpringApplication : Started HelloSpringApplication in 1.115 seconds (JVM running for 1.335)
이 상태에서 다음에 액세스하십시오.
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloSpringApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
}
}
plugins {
id 'org.springframework.boot' version '2.4.0'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '12'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
package com.example.demo;
@RestController
public class HelloController {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
@RequestMapping("/sb")
public String helloSp() {
return "Hello SpringBoot!";
}
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
//↓これを追加
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
@RequestMapping("/sb")
public String helloSp() {
return "Hello SpringBoot!";
}
}
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :bootRunMainClassName UP-TO-DATE
> Task :bootRun
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.4.0)
2020-11-23 13:46:19.374 INFO 7004 --- [ main] com.example.demo.HelloSpringApplication : Starting HelloSpringApplication using Java 12.0.2 on xxxxxxxx with PID 7004 (M:\develop\tools\eclipse\pleiades-2020-12\workspace\HelloSpring\build\classes\java\main started by xxxxx in M:\develop\tools\eclipse\pleiades-2020-12\workspace\HelloSpring)
2020-11-23 13:46:19.376 INFO 7004 --- [ main] com.example.demo.HelloSpringApplication : No active profile set, falling back to default profiles: default
2020-11-23 13:46:20.040 INFO 7004 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2020-11-23 13:46:20.045 INFO 7004 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-11-23 13:46:20.046 INFO 7004 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.39]
2020-11-23 13:46:20.088 INFO 7004 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-11-23 13:46:20.088 INFO 7004 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 689 ms
2020-11-23 13:46:20.177 INFO 7004 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-11-23 13:46:20.273 INFO 7004 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-11-23 13:46:20.279 INFO 7004 --- [ main] com.example.demo.HelloSpringApplication : Started HelloSpringApplication in 1.115 seconds (JVM running for 1.335)
http://localhost:8080/
http://localhost:8080/sb
오~ 할 수 있었다! 했어
요약
이번에는 SpringBoot와 SpringMVC를 사용하여 REST API를 깔끔하게 만들었습니다.
어떤 부분이 Boot 부분에서 어떤 역할을 하는지
분명히 이해하는 것이 좋을 것 같은 생각이 들었다.
그 근처는 또 이번.
참고
스프링 부트 스타터 입문
Reference
이 문제에 관하여(SpringBoot 시작하기 1. SpringBoot에서 Hello World REST API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/suganury/items/a7f33d0a3994a90bd3f0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
스프링 부트 스타터 입문
Reference
이 문제에 관하여(SpringBoot 시작하기 1. SpringBoot에서 Hello World REST API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/suganury/items/a7f33d0a3994a90bd3f0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)