基于 springBoot 的 Hello World

2015-11-03 00:06:49   最后更新: 2016-12-29 17:03:31   访问数量:977




正所谓万事开头难,根据官方文档,成功跑起来了第一个 spring 小程序,这里庆贺一下

也记录一下读官方文档的学习过程

 

首先,本地需要安装 JDK,虽然官方要求 JDK1.8 以上,不过我本地安装的 JDK1.7

其次,需要安装 Gradle 2.3 以上版本或 Maven 3.0 以上版本,用于构建项目

虽然国内使用 maven 较多,但是 gradle 作为新兴的构建方式正在越来越多的被使用者所接受

然后,我们就可以从 git 上获取项目了

git clone https://github.com/spring-guides/gs-rest-service.git techlog_spring

 

 

进入到 techlog_spring/initial 目录下,可以看到 src 目录,这里就是存放源码的地方

依次创建如下代码:

 

src/main/java/hello/Greeting.java

package hello; public class Greeting { private final long id; private final String content; public Greeting(long id, String content) { this.id = id; this.content = content; } public long getId() { return id; } public String getContent() { return content; } }

 

 

src/main/java/hello/GreetingController.java

package hello; import java.util.concurrent.atomic.AtomicLong; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class GreetingController { private static final String template= "Hello, %s!"; private final AtomicLong counter = new AtomicLong(); @RequestMapping("/greeting") public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); } }

 

 

src/main/java/hello/Application.java

package hello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main (String[] args) { SpringApplication.run(Application.class, args); } }

 

 

首先我们创建了 Greeting 类用来保存返回信息,他拥有两个 get 方法和一个构造函数

 

然后我们创建了 GreetingController 控制器

他有一个重要的注解 RestController,他是 spring4.0 的一个新的改进,他是 Controller 注解与 ResponseBody 注解的结合

上面的项目可以改为:

package hello; import java.util.concurrent.atomic.AtomicLong; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.stereotype.Controller; @Controller public class GreetingController { private static final String template= "Hello, %s!"; private final AtomicLong counter = new AtomicLong(); @RequestMapping("/greeting") public @ResponseBody Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); } }

 

ResponseBody 注解告知 Spring 使用 Jackson JSON library 实现将对象自动封装为 json 并返回

 

RequestMapping 注解将确保 HTTP 请求 /greeting 被映射到 greeting 函数上,这里并没有指定请求方式,无论是 GET、POST 还是 PUT 方法都会被映射到该函数上,如果需要限制请求方法,可以将该映射改为

@RequestMapping(method=GET)

 

 

RequestParam 注解指定了查询参数,并赋予了默认值,如果访问时并未提供此参数,则会自动取默认值

 

最后我们创建了可执行程序 Application.java 用来执行整个项目

SpringBootApplication 注解相当于以下注解的集合:

  • @Configuration -- 指定类 bean 定义的上下文来源
  • @EnableAutoConfiguration -- 告诉 Spring 启动类、其他 bean、各种属性的设置的路径
  • @EnableWebMvc -- spring 启动时会自动添加这个注解
  • @ComponentScan -- 通知 spring 寻找其他组件,在示例中,spring 自动找到了 GreetingController

 

SpringApplication.run 这个方法用来启动 spring

 

gradle

运行:

./gradlew build

 

 

然后执行:

java -jar build/libs/gs-rest-service-0.1.0.jar

 

 

maven

由于这里我们使用的是 JDK1.7,因此需要修改 pom.xml 里的依赖关系:

<properties> <java.version>1.8</java.version> </properties>

 

中的 1.8 改为 1.7

 

然后运行:

mvn spring-boot:run

 

 

在浏览器中访问:

http://localhost:8080/greeting

 

你将看到:

 

 

通过访问:

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

 

图中的 json 将变为

{ "id": 2, "content": "Hello, techlog!" }

 

 

有一个好的 IDE 可以让开发事半功倍,这里我们使用功能强大的 IntelliJ IDEA

 

打开 IDEA,点击 import project

 

 

然后选择 build.gradle (使用 gradle 构建项目)或选择 pom.xml(使用 maven 构建项目)

 

 

然后尽管下一步即可创建成功

 

下面,我们学习另一个注解的用法,只要将 hello/GreetingController.java 改为:

@RestController public class GreetingController { private static final String template= "Hello, %s!"; private final AtomicLong counter = new AtomicLong(); @RequestMapping("/greeting/{name}") public Greeting greeting(@PathVariable String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); } }

 

 

可以看到,我们将 RequestParam 注解换成了 PathVariable,这就是 restful 的访问风格

通过访问:http://localhost:8080/greeting/techlog 就可以看到:

{ "id": 2, "content": "Hello, techlog!" }

 

 

整理自官方文档 https://spring.io/docs

 






技术帖      mvc      技术分享      java      教程      文档      docs      spring      helloworld      入门      官方文档      springmvc     


京ICP备15018585号