每个人都在谈论微服务,例如WSO2微服务框架 , Spring Boot等。由于我已经很长时间没有从事任何与Spring相关的项目了,所以我想到了使用Spring Boot实现一个简单的RESTFul服务。
因此,我从Spring文档开始。 这很简单。 您可以使用“ Spring Initializr ”创建项目的结构。 这是一个在线工具,您可以在其中将所有所需的依赖项添加到项目POM文件中。 由于我是Maven的忠实拥护者,因此我正在生成一个Maven项目。
在Spring Initializr UI中,您可以选择语言,Spring Boot版本,项目组ID,工件名称等。请参见下面的屏幕快照,以获取我在生成项目时提供的信息。
当点击“ Generate Project”时,它将压缩的maven项目下载到您的计算机中。 解压缩并导入到IDE中。 初始项目结构如下。
在我的HelloWorld REST服务实现中,它接受用户名作为路径参数(或URL参数),并返回问候语JSON有效负载(响应)。 因此,我希望通过以下URL调用来调用我的REST服务:APP_NAME / api / hello / chandana。
@RestController是使用Spring实现RESTFul服务的一种方式。 因此,这个新的控制器类将命名为HelloWorldController。 所以我的HelloWorldController类如下所示。
package com.chandana.helloworld;import com.chandana.helloworld.bean.Greeting;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/api")
public class HelloWorldController {@RequestMapping("/")public String welcome() {//Welcome page, non-restreturn "Welcome to RestTemplate Example.";}@RequestMapping("/hello/{name}")public Greeting message(@PathVariable String name) {Greeting msg = new Greeting(name, "Hello " + name);return msg;}}
注意:如果您发现Spring Boot 1.5.6无法正确导入类并在IDE中显示错误消息“无法解析符号RestController”,则需要降级项目中使用的spring版本。 Spring Boot 1.5.6默认使用Spring 4.3.10.RELEASE依赖关系,需要将其降级到4.3.9.RELEASE。 因此,请在POM文件的属性部分添加<spring.version> 4.3.9.RELEASE </spring.version>。
一切就绪。 我可以使用以下maven命令构建并运行Spring Boot项目。 它将编译项目并运行它。
mvn spring-boot:运行
启动服务器时,您可以在控制台中注意到注册的REST服务URL,如下所示
INFO 9556 — [main] swsmmaRequestMappingHandlerMapping:将“ {[/ api / hello / {name}]} ”映射到公共com.chandana.helloworld.bean.Greeting com.chandana.helloworld。 HelloWorldController 。 消息 (java.lang.String)
INFO 9556 — [main] swsmmaRequestMappingHandlerMapping:将“ {[/ api /]} ”映射到公共java.lang.String com.chandana.helloworld。 HelloWorldController 。 欢迎 ()2017-0
最后,可以通过访问以下URL来调用REST服务:http:// localhost:8080 / api / hello / NAME
最终项目结构:
问候POJO类:
package com.chandana.helloworld.bean;public class Greeting {private String player;private String message;public Greeting(String player, String message) {this.player = player;this.message = message;}public String getPlayer() {return player;}public void setPlayer(String player) {this.player = player;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}
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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.chandana</groupId><artifactId>helloworld</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>helloworld</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.6.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring.version>4.3.9.RELEASE</spring.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
HelloWorldController类:
package com.chandana.helloworld;import com.chandana.helloworld.bean.Greeting;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/api")
public class HelloWorldController {@RequestMapping("/")public String welcome() {//Welcome page, non-restreturn "Welcome to RestTemplate Example.";}@RequestMapping("/hello/{name}")public Greeting message(@PathVariable String name) {Greeting msg = new Greeting(name, "Hello " + name);return msg;}}
结论
看起来,使用Spring Boot实现RESTFul服务非常简单。 因此,我有了一个使用Spring Boot实现“ Yield Price Sri Lanka ” Android应用程序后端的想法。 此外,希望实现一个管理用户界面来管理价格和商品信息,以及一个公共网络用户界面来为没有Android应用程序的用户显示价格明细。 保持联系。
翻译自: https://www.javacodegeeks.com/2017/09/building-restful-service-using-spring-boot.html