博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2、Spring Boot 2.x 快速入门
阅读量:4972 次
发布时间:2019-06-12

本文共 4345 字,大约阅读时间需要 14 分钟。

1.2 Spring Boot 快速入门

1.2.1 开发环境和工具

  • JDK 1.8+:Spring Boot 2.x 要求 JDK 1.8 环境及以上版本。另外,Spring Boot 2.x 只兼容 Spring Framework 5.0 及以上版本;
  • Maven 3.2+:为 Spring Boot 2.x 提供了相关依赖构建工具是 Maven,版本需要 3.2 及以上版本。使用 Gradle 则需要 1.12 及以上版本。
  • IntelliJ IDEA:IntelliJ IDEA (简称 IDEA)是常用的开发工具,也是本文推荐使用的,同样使用 Eclipse IDE,也能完成本文的实践案例。另外,本文的工程都会在 GitHub 上开源,如需要请自行安装 Git 环境。
  • 本文代码地址:

1.2.2 创建工程 “Hello Spring Boot”

  • 在 IDEA 中,利用 Spring Initializr 插件进行创建;
  • 访问网站 进行在线生成Spring Boot项目打包下载到本地;
  • 下载安装 Spring Boot CLI脚手架进行快速创建。

1.2.2 Creating the POM

4.0.0
com.hw
spring-boot-demo
0.0.1-SNAPSHOT
jar
spring-boot-demo
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
2.1.0.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin

1.2.3 开发工程之应用启动类

在工程 src 目录中,已经自动创建了包目录 com.hw.springbootdemo ,其包下自动创建了 Spring Boot 应用启动类SpringBootDemoApplication,代码如下:

package com.hw.springbootdemo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class SpringBootDemoApplication {    public static void main(String[] args) {        SpringApplication.run(SpringBootDemoApplication.class, args);    }}
1.2.3.1 @SpringBootApplication 注解
  • 该注解用标注启动类,被标注的类为一个配置类,并会触发自动配置和 Starter 组件扫描。
  • @SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan
  • 注解的职责如下:
    1. 在被该注解修饰的类中,可以用 @Bean 注解来配置多个Bean。应用启动时,Spring 容器会加载Bean并注入到 Spring 容器;
    2. 启动 Spring 上下文的自动配置。基于依赖和定义的 Bean 会自动配置需要的 Bean 和类;
    3. 扫描被 @Configuration 修饰的配置类。也会扫描 Starter 组件的配置类,并启动加载其默认配置。
1.2.3.2 SpringApplication 类

大多数情况下,在 main 方法中调用 SpringApplication 类的静态方法 run(Class, String[]) ,用来引导启动 Spring 应用程序。默认情况下,该类的职责会执行如下步骤:

  1. 创建应用上下文 ApplicationContext 实例;
  2. 注册 CommandLinePropertySource,将命令行参数赋值到 Spring 属性;
  3. 刷新应用上下文,加载所有单例;
  4. 触发所有 CommandLineRunner Bean。

在实际开发中如果需要自定义创建高级的配置,可以通过 run(Class, String[]) 方法的第二个参数,并以 String 数组的形式传入。

1.2.4 开发工程之 Hello 控制层类

  • 在pom.xml 文件中添加spring-boot-starter-web依赖。
org.springframework.boot
spring-boot-starter-web
  • 在com.hw.springbootdemo下面(SpringBootDemoApplication.java同级)新建web包,并添加HelloController.java文件,内容如下,添加控制层代码。
  • 访问
package com.hw.springbootdemo.web;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @Description TODO * @Author hw * @Date 2018/11/18 20:47 * @Version 1.0 */@RestController@RequestMapping("api/v1")public class HelloController {    @GetMapping("hello")    public String hello() {        return "Hello Spring Boot!";    }}
  • 上面定义了简单的 REST API 服务,即 GET:/api/v1/hello。表示该 Hello 控制层 hello() 方法会提供请求路径为 /api/v1/hello 和请求方法为 GET 的 HTTP 服务接口。
  • Spring 4.0 的注解 @RestController 支持实现 REST API 控制层。本质上,该注解结合了 @Controller 和 @ResponseBody 的功能。
  • @GetMapping = @RequestMapping(value = "hello",method = RequestMethod.GET),类似的还有@PostMapping、@PutMapping、@DeleteMapping。
1.2.4.1 @Controller 注解

@Controller 对控制层类进行标注,职责是使控制层可以处理 HTTP 请求,简单可以理解为,使控制层能接受请求,处理请求并响应。

1.2.4.2 @RequestMapping 注解
  • @RequestMapping 对控制层类的方法进行标注,==职责是标明方法对应的 HTTP 请求路由的关系映射==。
  • 参数 value 主要请求映射地址,可接受多个地址。参数 method 标注 HTTP 方法,常用如: GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE。
  • 默认是 GET HTTP 方法,在 GET 请求的情况下,可以缩写成 @RequestMapping(value = "/book/hello") 。
  • Spring 4 支持直接使用 XXXMapping 形式的注解,比如上面代码可以写成 @GetMapping("/book/hello")。
1.2.4.3 @ResponseBody 注解

@ResponseBody 对控制层类的方法进行标注,职责是指定响应体为方法的返回值。上面代码中,案例是以字符串的形式返回,自然可以使用其他复杂对象作为返回体。

转载于:https://www.cnblogs.com/Grand-Jon/p/9985058.html

你可能感兴趣的文章
android学习
查看>>
c的cl 编译dll,C#调用dll
查看>>
微信公众号为什么要加粉?流量,广告,KPI,吸粉,增粉
查看>>
在vue项目中引入jquery
查看>>
TOP命令各个参数代表意义详解
查看>>
js中js数组、对象与json之间的转换
查看>>
[ubuntu]给ubuntu server安装xubuntu(xfce)窗口管理器
查看>>
poj 1066 Treasure Hunt
查看>>
QProcess 进程类—调用外部程序
查看>>
蓝牙4.0的LM层说明
查看>>
生成新的密钥
查看>>
01串 ---- 递推
查看>>
课后题--------求分子量-----Molar mass------
查看>>
Linux服务器配置与管理
查看>>
透明的分库分表方案——转自:OSChina 悠悠然然
查看>>
Python学习笔记十一
查看>>
关于继承的那些事!
查看>>
iOS GCD基础篇 - 同步、异步,并发、并行的理解
查看>>
LOJ 2546 「JSOI2018」潜入行动——树形DP
查看>>
第五节、矩阵分解之LU分解
查看>>