Spring Boot로 시험용 시뮬레이터 만들기
18923 단어 자바spring-boot
연계처의 시스템과의 연동이 개발 공정의 후기가 되는 경우가 많기 때문에, 그때까지의 기간중에 사용하는 다른 시스템 시뮬레이터를 제대로 준비하고 싶고, 이번은 Spring Boot로 작성해 보겠습니다.
환경
macOS Big Sur
Visual Studio Code 1.53.1
요구사항
준비
Java는 설치되었습니다.
Maven이 들어 있지 않기 때문에 brew로 설치한다.
% mvn -v
zsh: command not found: mvn
% brew install maven
...
% mvn -v
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /usr/local/Cellar/maven/3.8.1/libexec
Java version: 15.0.2, vendor: N/A, runtime: /usr/local/Cellar/openjdk/15.0.2/libexec/openjdk.jdk/Contents/Home
Default locale: ja_JP, platform encoding: UTF-8
OS name: "mac os x", version: "11.2.1", arch: "x86_64", family: "mac"
만들기
4. 최초의 Spring Boot 애플리케이션 개발 의 대로에 진행해 간다.
POM 만들기
모든 폴더에 pom.xml을 만듭니다.
pom.xml<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.4</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<description/>
<developers>
<developer/>
</developers>
<licenses>
<license/>
</licenses>
<scm>
<url/>
</scm>
<url/>
<!-- Additional lines to be added here... -->
</project>
터미널에서 pom.xml이있는 곳으로 이동하여 mvn package
를 실행하면 target
아래에 myproject-0.0.1-SNAPSHOT.jar
가 생성됩니다.
처음에는 라이브러리를 Maven Central Repository에서 다운로드하기 때문에 시간이 걸린다.
샘플 컨트롤러 작성
소스에 대한 src/main/java/
디렉토리를 작성하고 아래에 Example.java
를 작성하십시오.
Example.javaimport org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;
@RestController
@EnableAutoConfiguration
public class Example {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Example.class, args);
}
}
터미널에서 mvn spring-boot:run
를 실행하면 응용 프로그램이 시작됩니다.
% mvn spring-boot:run
.....
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.4.4)
.....
2021-04-11 09:53:43.339 INFO 33707 --- [ main] Example : Started Example in 1.892 seconds (JVM running for 2.311)
브라우저에서 http://localhost:8080에 액세스하면 Hello World!
가 출력되는지 확인할 수 있습니다.
구현
main 메소드는 컨트롤러로부터 잘라낸다.
또한 적절하게 패키지를 자른다.
※상에서 작성한 Example.java
는 삭제
Application.javapackage mamfrog;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
요청 매개 변수로 응답 코드 지정
GET 파라미터 code
로 지정한 수치를 리스폰스 코드로 설정하는 컨트롤러를 작성한다.
RestTestController.javapackage mamfrog.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/rest")
public class RestTestController {
@RequestMapping("/")
public ResponseEntity<Map<String, Object>> home(
@RequestParam(value = "code", required = false, defaultValue = "200") String code) {
Map<String, Object> map = new HashMap<>();
map.put("code", code);
return new ResponseEntity<Map<String, Object>>(map, HttpStatus.resolve(Integer.parseInt(code)));
}
}
호출 예) http://localhost:8080/rest/?code=201
부정한 값을 지정했을 경우의 고려는 하지 않는다.
응답 본문은 요청의 code
를 그대로 반환합니다.
응답을 임의의 JSON으로 설정
상기 컨트롤러를 개조하여, 소정의 장소에 있는 JSON 파일의 내용을 응답 본체로서 반환하도록 한다.
이번에는 JSON 라이브러리로 Jackson을 사용. (pom.xml 약어)
% mvn -v
zsh: command not found: mvn
% brew install maven
...
% mvn -v
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: /usr/local/Cellar/maven/3.8.1/libexec
Java version: 15.0.2, vendor: N/A, runtime: /usr/local/Cellar/openjdk/15.0.2/libexec/openjdk.jdk/Contents/Home
Default locale: ja_JP, platform encoding: UTF-8
OS name: "mac os x", version: "11.2.1", arch: "x86_64", family: "mac"
4. 최초의 Spring Boot 애플리케이션 개발 의 대로에 진행해 간다.
POM 만들기
모든 폴더에 pom.xml을 만듭니다.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.4</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<description/>
<developers>
<developer/>
</developers>
<licenses>
<license/>
</licenses>
<scm>
<url/>
</scm>
<url/>
<!-- Additional lines to be added here... -->
</project>
터미널에서 pom.xml이있는 곳으로 이동하여
mvn package
를 실행하면 target
아래에 myproject-0.0.1-SNAPSHOT.jar
가 생성됩니다.처음에는 라이브러리를 Maven Central Repository에서 다운로드하기 때문에 시간이 걸린다.
샘플 컨트롤러 작성
소스에 대한
src/main/java/
디렉토리를 작성하고 아래에 Example.java
를 작성하십시오.Example.java
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;
@RestController
@EnableAutoConfiguration
public class Example {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Example.class, args);
}
}
터미널에서
mvn spring-boot:run
를 실행하면 응용 프로그램이 시작됩니다.% mvn spring-boot:run
.....
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.4.4)
.....
2021-04-11 09:53:43.339 INFO 33707 --- [ main] Example : Started Example in 1.892 seconds (JVM running for 2.311)
브라우저에서 http://localhost:8080에 액세스하면
Hello World!
가 출력되는지 확인할 수 있습니다.구현
main 메소드는 컨트롤러로부터 잘라낸다.
또한 적절하게 패키지를 자른다.
※상에서 작성한
Example.java
는 삭제Application.java
package mamfrog;
import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
요청 매개 변수로 응답 코드 지정
GET 파라미터
code
로 지정한 수치를 리스폰스 코드로 설정하는 컨트롤러를 작성한다.RestTestController.java
package mamfrog.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/rest")
public class RestTestController {
@RequestMapping("/")
public ResponseEntity<Map<String, Object>> home(
@RequestParam(value = "code", required = false, defaultValue = "200") String code) {
Map<String, Object> map = new HashMap<>();
map.put("code", code);
return new ResponseEntity<Map<String, Object>>(map, HttpStatus.resolve(Integer.parseInt(code)));
}
}
호출 예) http://localhost:8080/rest/?code=201
부정한 값을 지정했을 경우의 고려는 하지 않는다.
응답 본문은 요청의
code
를 그대로 반환합니다.응답을 임의의 JSON으로 설정
상기 컨트롤러를 개조하여, 소정의 장소에 있는 JSON 파일의 내용을 응답 본체로서 반환하도록 한다.
이번에는 JSON 라이브러리로 Jackson을 사용. (pom.xml 약어)
BASE_PATH
는 고정값 dataId
로 지정됩니다.[dataId].json
지정하지 않거나 해당 파일이 없으면 빈 JSON을 반환합니다.RestTestController.java
package mamfrog.controller;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/rest")
public class RestTestController {
private static final String BASE_PATH = "./";
@RequestMapping("/")
public ResponseEntity<Map<String, Object>> home(
@RequestParam(value = "code", required = false, defaultValue = "200") String code,
@RequestParam(value = "dataId", required = false) String dataId) {
Map<String, Object> map = new HashMap<>();
if (StringUtils.isNotEmpty(dataId)) {
try {
InputStream getLocalJsonFile = new FileInputStream(BASE_PATH + dataId + ".json");
map = new ObjectMapper().readValue(getLocalJsonFile, HashMap.class);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return new ResponseEntity<Map<String, Object>>(map, HttpStatus.resolve(Integer.parseInt(code)));
}
}
JSON 파일 샘플
test.json
{
"key1": "aaaaaaaa",
"key2": false
}
호출 예) http://localhost:8080/rest/?dataId=test
연계 시험용으로 내부에서 사용할 뿐이므로, 요건을 충족하는 최저한의 코드는 이 정도.
에러 처리 등은 필요에 따라 추가해 가는 느낌.
보충
Rest API의 동작 확인은 Google 크롬의 확장 기능 「Talend API Tester」가 편리.
Reference
이 문제에 관하여(Spring Boot로 시험용 시뮬레이터 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mamfrog/items/1abf15c37d359051d9b2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)