天天看点

SpringBoot 入门案例之基础篇二

REST 风格简介

什么是 REST ?
  • REST(Representational State Transfer)表现形式状态转换
  • 传统风格资源描述形式
  • ​http://localhost/user/getById?id=1​

    ​ (得到id为1的用户)
  • ​http://localhost/user/saveUser​

    ​ (保存用户)
  • REST风格描述形式
  • ​http://localhost/user/1​

    ​ (得到id为1的用户)
  • ​http://localhost/user​

    ​ (保存用户)
优点
  • 隐藏资源的访问行为, 无法通过地址得知对资源是何种操作
  • 书写简化
按照 REST 风格访问资源时使用**​

​行为动作​

​**区分对资源进行了何种操作
  • ​GET​

    ​​ 用来获取资源,​

    ​POST​

    ​​ 用来新建资源,​

    ​PUT​

    ​​ 用来更新资源,​

    ​DELETE​

    ​ 用来删除资源
  • ​http://localhost/users​

    ​​ 查询全部用户信息​

    ​GET (查询)​

  • ​http://localhost/users/1​

    ​​ 查询指定用户信息​

    ​GET (查询)​

  • ​http://localhost/users​

    ​​ 添加用户信息​

    ​POST (新增/保存)​

  • ​http://localhost/users​

    ​​ 修改用户信息​

    ​PUT (修改/更新)​

  • ​http://localhost/users/1​

    ​​ 删除用户信息​

    ​DELETE (删除)​

注意
  • 上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
  • 描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源
  • 例如:​

    ​users​

    ​​、​

    ​books​

    ​​、​

    ​accounts​

    ​ …
根据REST风格对资源进行访问称为 ​

​RESTful​

**​RESTful​ 入门案例

步骤

①:设定http请求动作(动词)

  • 使用​

    ​@RequestMapping​

    ​​ 注解的​

    ​method​

    ​ 属性声明请求的方式
  • 使用​

    ​@RequestBody​

    ​ 注解 获取请求体内容。直接使用得到是 key=value&key=value…结构的数据。get 请求方式不适用
  • 使用​

    ​@ResponseBody​

    ​​ 注解实现将 controller 方法的​

    ​返回对象​

    ​​ 转换为​

    ​json​

    ​格式 响应给客户端
  • ​@RequestMapping(value = "/users",method = RequestMethod.POST)​

SpringBoot 入门案例之基础篇二

②:设定请求参数(路径变量)

  • 使用​

    ​@PathVariable​

    ​​ 用于绑定​

    ​url​

    ​​ 中的​

    ​占位符​

    ​​。例如:请求 url 中 /delete/​

    ​{id}​

    ​​,这个​

    ​{id}​

    ​就是 url 占位符。
SpringBoot 入门案例之基础篇二
  • ​@RequestMapping​

SpringBoot 入门案例之基础篇二
  • ​@PathVariable​

SpringBoot 入门案例之基础篇二

​@RequestBody​

​​、​

​@RequestParam​

​​、​

​@PathVariable​

​ 三者的区别 ?
SpringBoot 入门案例之基础篇二

RESTful 快速开发

  • 使用​

    ​@RestController​

    ​ 注解开发 RESTful 风格
SpringBoot 入门案例之基础篇二
  • 使用​

    ​@GetMapping​

    ​​、​

    ​@PostMapping​

    ​​、​

    ​@PutMapping​

    ​​、​

    ​@DeleteMapping​

    ​​ 简化​

    ​@RequestMapping​

    ​ 注解开发
SpringBoot 入门案例之基础篇二

教你一招:复制模块

原则
  • 保留工程基础结构
  • 抹掉原始工程痕迹
操作步骤
SpringBoot 入门案例之基础篇二
SpringBoot 入门案例之基础篇二
SpringBoot 入门案例之基础篇二
小结
  1. 在工作空间中复制对应工程,并修改工程名称
  2. 删除与Idea相关配置文件,仅保留src目录与pom.xml文件
  3. 修改pom.xml文件中的artifactId与新工程/模块名相同
  4. 删除name标签(可选)
  5. 保留备份工程供后期使用

修改基础配置

SpringBoot 入门案例之基础篇二
修改配置
  • 修改服务器端口
server.port=80      
  • 关闭运行日志图标(banner)
spring.main.banner-mode=off      
  • 设置日志相关
logging.level.root=debug      
SpringBoot 内置属性查询
  • ​​https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties​​
  • 官方文档中参考文档第一项:​

    ​Application Propertie​

小结
  1. SpringBoot 中导入对应starter后,提供对应配置属性
  2. 书写 SpringBoot 配置采用关键字+提示形式书写

3种配置文件类型

配置文件格式
SpringBoot 入门案例之基础篇二
SpringBoot提供了多种属性配置方式
  • ​application.properties​

server.port=80      
  • ​application.yml​

server:
  port: 81      
  • ​application.yaml​

server:
  port: 82      
小结
  • SpringBoot 提供了3种配置文件的格式
  1. properties(传统格式/默认格式)
  2. ​yml(主流格式)​

  3. yaml

配置文件加载优先级

SpringBoot 入门案例之基础篇二
SpringBoot 配置文件加载顺序
  • ​application.properties​

    ​​ >​

    ​application.yml​

    ​​ >​

    ​application.yaml​

​常用​

​配置文件种类
  • ​application.yml​

小结
  1. 配置文件间的加载优先级:​

    ​properties(最高)​

    ​​、​

    ​ymlyaml(最低)​

  2. 不同配置文件中相同配置按照​

    ​加载优先级​

    ​相互覆盖 (高优先级配置内容会覆盖低优先级配置内容),​

    ​不同配置文件中不同配置全部保留​

教你一招:属性提示消失解决方案

SpringBoot 入门案例之基础篇二
SpringBoot 入门案例之基础篇二

关于 ​yaml​

yaml 简介

  • ​YAML(YAML Ain’t Markup Language)​

    ​,一种数据序列化格式
  • 优点:
  • 容易阅读
  • 容易与脚本语言交互
  • 以数据为核心,重数据轻格式
  • YAML文件扩展名
  • ​.yml (主流)​

  • ​.yaml​

SpringBoot 入门案例之基础篇二

yaml 语法规则

  • 大小写敏感
  • 属性层级关系使用多行描述,每行结尾使用冒号结束
  • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(​

    ​不允许使用Tab键​

    ​)
  • 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
  • ​key: value​

    ​​ ->​

    ​value 前面一定要有空格​

  • ​# 表示注释​

  • 核心规则:数据前面要加空格与冒号隔开
server:
  servlet:
    context-path: /hello
  port: 82

country: china
province: beijing
city: beijing
area:      

yaml 数据类型

字面值表示方式
SpringBoot 入门案例之基础篇二
# 字面值表示方式
boolean: TRUE       #TRUE,true,True,FALSE,false , False 均可
float: 3.14         #6.8523015e+5 # 支持科学计数法
int: 123            #0b1010_0111_0100_1010_1110 # 支持二进制、八进制、十六进制
# null: ~             # 使用 ~ 表示 null
string: HelloWorld  # 字符串可以直接书写
string2: "Hello World"  # 可以使用双引号包裹特殊字符
date: 2018-02-17        # 日期必须使用 yyyy-MM-dd 格式
datetime: 2018-02-17T15:02:31+08:00   # 时间和日期之间使用 T 连接,最后使用 + 代表时区      
数组表示方式:在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔
SpringBoot 入门案例之基础篇二
# 数组书写格式
subject:
  - Java
  - 前端
  - 大数据

# 数组书写缩略格式
subject2: [Java,前端,大数据] 

# 对象书写格式
enterprise:
  name: zhangsan
  age: 16

# 对象数组书写格式
users: 
  - name: Tom
    age: 4

  - name: Jerry
    age: 5

# 对象数组书写格式二
users2: 
  -
    name: Tom
    age: 4
  -
    name: Jerry
    age: 5

# 对象数组书写缩略格式
users3: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ]      

读取 yaml 单一属性数据

使用 ​

​@Value​

​ 读取单个数据,属性名引用方式:${一级属性名.二级属性名……}
SpringBoot 入门案例之基础篇二
// 读取 yaml 数据中的单一数据
    @Value("${country}")
    private String country1;

    @Value("${user.name}")
    private String name1;

    @Value("${subject[1]}")
    private String subject1;

    @Value("${users[1].age}")
    private String age1;

    @GetMapping
    public String getById() {
        System.out.println("springboot is running...");
        System.out.println("country1 = " + country1);
        System.out.println("name1 = " + name1);
        System.out.println("subject1 = " + subject1);
        System.out.println("age1 = " + age1);
        return "spring is running...";
    }      
SpringBoot 入门案例之基础篇二
小结
  1. 使用​

    ​@Value​

    ​​ 配合​

    ​SpEL​

    ​ 读取单个数据
  2. 如果数据存在多层级,依次书写层级名称即可

yaml 文件中的变量引用

在配置文件中可以使用属性名引用方式引用属性
SpringBoot 入门案例之基础篇二
baseDir: c:\windows

# 使用 ${属性名} 引用数据
tempDir: ${baseDir}\temp      
@Value("${tempDir}")
    private String tempDir;

    @GetMapping
    public String getById() {
        System.out.println("tempDir = " + tempDir);
        return "spring is running...";
    }      
SpringBoot 入门案例之基础篇二
属性值中如果出现 ​

​转义字符​

​​,需要使用​

​双引号​

​包裹
baseDir: c:\windows100

# 使用 ${属性名} 引用数据
# 使用引号包裹的字符串,其中的转义字符可以生效
tempDir: "${baseDir}\temp \t1 \t2 \t3"      
@Value("${tempDir}")
    private String tempDir;

    @GetMapping
    public String getById() {
        System.out.println("tempDir = " + tempDir);
        return "spring is running...";
    }      
SpringBoot 入门案例之基础篇二
小结
  1. 在配置文件中可以使用​

    ​${属性名}​

    ​ 方式引用属性值
  2. 如果属性中出现特殊字符,可以使用​

    ​双引号​

    ​包裹起来作为字符解析

读取 yaml 全部属性数据

  • 封装全部数据到 Environment对象
  • 注意要导入这个包:​

    ​import org.springframework.core.env.Environment;​

SpringBoot 入门案例之基础篇二
// 使用自动装配,将所有的数据封装到一个Environment对象中
    @Autowired
    private Environment env;

    @GetMapping
    public String getById() {
        System.out.println("springboot is running...");
        System.out.println("country1 = " + country1);
        System.out.println("name1 = " + name1);
        System.out.println("subject1 = " + subject1);
        System.out.println("age1 = " + age1);
        System.out.println("tempDir = " + tempDir);
        System.out.println("----------------------------");
        System.out.println(env.getProperty("subject[1]"));
        System.out.println(env.getProperty("user.name"));
        return "spring is running...";
    }      
SpringBoot 入门案例之基础篇二
小结
  1. 使用​

    ​Environment​

    ​ 对象封装全部配置信息
  2. 使用​

    ​@Autowired​

    ​​ 自动装配数据到​

    ​Environment​

    ​ 对象中

读取 yaml 引用类型属性数据

  • 自定义对象封装指定数据
SpringBoot 入门案例之基础篇二
  • 自定义对象封装指定数据的作用
SpringBoot 入门案例之基础篇二
  • yaml 配置文件
# 操作步骤:
# 1、创建类,用于封装下面的数据
# 2、由spring帮我们去加载数据到对象中,一定要告诉spring加载这组信息
# 3、使用的时候从spring中直接获取信息使用

datasource:
  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost/springboot_db
  username: root
  password:      
  • 数据模型类:MyDataSource
// 1.定义数据模型封装yaml文件中对应的数据
// 2.定义为spring管控的bean
@Component
// 3.指定加载的数据
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource {

    private String driver;
    private String url;
    private String username;
    private String password;

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "MyDataSource{" + "driver='" + driver + '\'' + ", url='" + url + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + '}';
    }
}      
  • 测试
@Autowired
    private MyDataSource myDataSource;

    @GetMapping
    public String getById() {
        System.out.println("springboot is running...");
        System.out.println("myDataSource = " + myDataSource);
        return "spring is running...";
    }      
  1. 使用​

    ​@ConfigurationProperties​

    ​ 注解绑定配置信息到封装类中
  2. 封装类需要定义为Spring管理的bean,否则无法进行属性注入