eclipse java restful_Eclipse下利用Maven创建SpringBoot的Restful风格程序

参考文章:https://spring.io/guides/gs/rest-service/

中文翻译:https://blog.dubby.cn/detail.html?id=9040

1.目标是什么

构建一个web应用,我们可以请求:

http://localhost:8080/greeting

返回一个JSON:

{"id":1,"content":"Hello, World!"}

还可以发起一个带参数的请求:

http://localhost:8080/greeting?name=User

返回一个JSON:

{"id":1,"content":"Hello, User!"}

2.开始创建

2.1.Maven依赖

新建一个Maven项目

pom.xml文件

1

2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

3 4.0.0

4 com.niiam

5 SpringBootRestfulTest

6

7 0.0.1-SNAPSHOT

8 SpringBootRestfulTest Maven Webapp

9 http://maven.apache.org

10

11

12 org.springframework.boot

13 spring-boot-starter-parent

14 1.5.9.RELEASE

15

16

17

18

19 org.springframework.boot

20 spring-boot-starter-web

21

22

23 org.springframework.boot

24 spring-boot-starter-test

25 test

26

27

28 com.jayway.jsonpath

29 json-path

30 test

31

32

33

34

35 9.0.1

36

37

38

39 SpringBootRestfulTest

40

41

42 org.springframework.boot

43 spring-boot-maven-plugin

44

45

46

47

48

49

50 spring-releases

51 https://repo.spring.io/libs-release

52

53

54

55

56 spring-releases

57 https://repo.spring.io/libs-release

58

59

60

其中,spring-boot-maven-plugin给我们提供了这么几个功能:

他会把classpath下的jar统一打包成一个可直接运行的”über-jar”,方便我们运行。

他会自动搜索public static void main()作为程序执行的入口。

他内置一个依赖版本决定者。也就是他会指定依赖的版本。当然你也可以指定版本,如果你不指定,默认由他来决定版本。

2.2 实体类

根据

{

"id": 1,

"content": "Hello, World!"

}

来写出一个表达这个json的bean    src/main/java/hello/Greeting.java

1 packagehello;2

3 public classGreeting {4 private final longid;5 private finalString content;6 public Greeting(longid, String content) {7 this.id =id;8 this.content =content;9 }10 public longgetId() {11 returnid;12 }13 publicString getContent() {14 returncontent;15 }16 }

Spring会使用Jackson JSON自动把Greeting的实例序列化成JSON。

2.3 controller

在Spring构建的restful应用中,HTTP请求是由controller接收并处理的。想要创建一个controller可以使用

src/main/java/hello/GreetingController.java

1 packagehello;2

3 importjava.util.concurrent.atomic.AtomicLong;4 importorg.springframework.web.bind.annotation.RequestMapping;5 importorg.springframework.web.bind.annotation.RequestParam;6 importorg.springframework.web.bind.annotation.RestController;7

8 @RestController9 public classGreetingController {10 private static final String template = "Hello, %s!";11 private final AtomicLong counter = newAtomicLong();12 @RequestMapping("/greeting")13 public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {14 return newGreeting(counter.incrementAndGet(),15 String.format(template, name));16 }17 }

这个controller很简洁明了,但是在背后隐藏了很多事先细节,我们一点点来分解。

/greeting这个HTTP请求会被路由到greeting()这个方法上来处理。

上面的例子没有指明GET,PUST或者是PUT等HTTP方法,因为

name的值绑定到greeting()的参数name上。这个参数被标记为可选的,也就是可传可不传的,(默认情况下,required=true是必须要传的),在这里,如果没有传name,就会使用defaultValue的值。

greeting()方法里创建了一个Greeting对象,然后返回,用一个自增的int作为id,用name的值拼接成content。

传统的MVC的controller和RESTful的controller的最大的区别就是返回的HTTP的response。传统的controller返回的是一个由后端渲染的HTML,而RESTful返回的是一个对象,然后被序列化成JSON字符串。

JSON),而不是一个视图(也就是HTML)。这个注解等同于同时使用

上面提到Spring会自动把对象转化成JSON,我们还不需要手动来转换,那么是谁帮我们做的呢?真相是,只要Jackson 2在classpath下,Spring就会使用MappingJackson2HttpMessageConverter来自动转换。

2.4 可执行Jar

虽然也可以打包成传统的war包然后交给servlet容器来执行,但是更多的时候是打包成一个可以直接执行的Jar。

src/main/java/hello/Application.java

1 packagehello;2 importorg.springframework.boot.SpringApplication;3 importorg.springframework.boot.autoconfigure.SpringBootApplication;4 @SpringBootApplication5 public classApplication {6 public static voidmain(String[] args) {7 SpringApplication.run(Application.class, args);8 }9 }

一般来说,对于Spirng MVC项目,你需要使用spring-webmvc,他就会自动帮你加上这个,比如,设置DispatcherServlet。

hello包下的其他组件,包含controller,service等。

main()就是这个应用的入口。发现了吗,整个应用没有一个XML文件,全部都是Java代码,没有任何配置,这就是Spring Boot想带给你的礼物。

右键点击Application.java,选择run as->java application,即可启动服务。

2.5 生成可执行Jar

右键点击项目->run as->Maven Install生成jar包,可能需要在项目设置里将JRE换成JDK

在command line输入:

java -jar SpringBootRestfulTest.jar

启动

在浏览器中输入:

http://localhost:8080/greeting?name=wangle

http://localhost:8080/greeting

eclipse java restful_Eclipse下利用Maven创建SpringBoot的Restful风格程序_第1张图片

需注意的是,此处启动的jar是包含了Tomcat服务器的

如需终止,可参考:如何优雅地停止运行中的内嵌Tomcat的Spring Boot应用 http://jaskey.github.io/blog/2016/04/05/shutdown-spring-boot-application-gracefully/

你可能感兴趣的:(eclipse,java,restful)