SpringBoot入门自用笔记

2、REST风格

注意事项

上述行为是约定方式,约定不是规范,可以打破,所以称为REST风格,而不是REST规范

描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:users、books、accounts...

2.1、RESTful快速开发

  • 名称:@RestController

  • 类型:类注解

  • 位置:基于SpringMVC的RESTful开发控制器类定义上方

  • 作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解组合功能

  • 范例:

    • @RestController
      public class BookController{
      ​
      }

  • 名称:@GetMapping @PostMapping @PutMapping @DeleteMapping

  • 名称:方法注解

  • 位置:基于SpringMVC的RESTful开发控制器方法定义上方

  • 作业:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求

  • 范例

    • @GetMapping("/{id}")
      public String getById(@PathBariable Integer id){
          System.out.println("book getById..."+id)
          return "{'module':'book getById'}";
      }

  • 属性

    • value(默认):请求访问路径

3、SpringBoot复制模块快速开发

1,在工作空间中复制模块,修改模块名称

2,删除与idea相关的配置文件,仅保留src目录和pom.xml文件

3,修改pom.xml文件中的artifactId与新模块名相同

4,删除name标签(可选)

5,保留备份模块后期使用

4、3种配置文件

  • SpringBoot提供了多种属性配置方法

    • application.properties(传统格式/默认格式)

      • server.port=80

    • application.yml(主流格式)

      • server:

      • port:81

    • application.yaml

      • server:

      • prot:82

  • Spring Boot配置文件加载顺序

    • application.properties > application.yml > application.yaml

    • 如果有同样的属性配置则选择加载顺序最大的,对于其他的取三者的并集,不同配置文件中的相同配置全部保留

4.1、YAML

YAML(YAML Ain't Markup Language),一种数据序列化格式

  • 优点

    • 容易阅读

    • 容易与脚本语言交互

    • 以数据为核心,重数据轻格式

  • YAML文件扩展名

    • .yml(主流)

    • .yaml

  • yaml语法规则

    • 大小写敏感

    • 属性层级关系使用多行描述,每行结尾使用冒号结束

    • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用tab键)

    • 属性值前加空格(属性名与属性值之间使用冒号+空格作为分隔)

    • #表示注释

  • 核心规则:数据前面要加空格与冒号隔开

#举例:
enterprise:
 name: itcast
 age: 12
 tel: 12345678
​
#数组
subject:
 - java
 - 前端
 - 后端
​
likes: [java,html]
​
#对象数组
users:
 - name: tom
   age: 12
 - name: jone
   age: 13
#对象数组格式二
users:
 - 
   name: tom
   age: 12
 - 
   name: jone
   age: 13
​
users2: [{ name: tom,age: 12},{name: toms,age: 122}] #对象数组书写缩略格式

yaml语法规则:字面值表示方式

  • boolean: TRUE                       #TRUE,true,True,FALSE,false,False均可
    float: 3.14                         #6.234235234e+5   支持科学计数法
    int: 123                            #0b1010_0111_0101_1110    支持二进制、八进制、十六进制
    null: ~                             #使用~表示null
    String: helloworld                  #字符串可以直接书写
    String2: "hello world"              #可以使用双引号包裹特殊字符
    date: 2022-04-09                    #日期必须使用yyyy-MM-dd格式
    datetime: 2022-04-09T16:03:22+08:00 #时间和日期之间使用T连接,最后使用+代表时区

4.2、yml数据读取

第一步:在resource目录下新建一个application.yml文件,写入以下测试数据

#修改服务器默认端口号
server:
  port: 80
​
lesson: SpringBoot
​
enterprise:
  name: jack
  age: 19
  tel: 12345656
  subject:
    - java
    - css
    - js
    - 大数据
likes: [game,music,shoopping]
​
​
baseDir: c:\windows
#使用${属性名}引用数据
tempDir: ${baseDir}\temp
​
#把/t变成转义字符,用双引号包裹
tempDir2: "${baseDir}\temp \t1 \t2 \t3"
​
​
datasource:
  driver: com.mysql.jdbc.Driver
  url: jdbc:mysql://localhost/springboot_db
  username: root
  password: root

第二步:新建一个controller包下的Controller类(测试的时候运行程序,然后在浏览器请求hello看控制台输出)

package com.yi.controller;
​
import com.yi.MyDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
​
//Rest模式
@RestController
@RequestMapping("/hello")
public class helloController {
​
    @Value("${server.port}")
    private String port;
​
    @Value("${lesson}")
    private String lessonName;
​
    @Value("${enterprise.name}")
    private String name;
​
    @Value("${enterprise.subject[0]}")
    private String subject_00;
​
    @Value("${likes[1]}")
    private String likes1;
​
    @Value("${tempDir}")
    private String tempDir;
​
    @Value("${tempDir2}")
    private String tempDir2;
​
    //————————————————————————————//
    //使用自动装配将所有的数据封装到一个对象Environment中
    @Autowired
    private Environment env;//注意导包问题
​
    @Autowired
    private MyDataSource myDataSource;
​
    @GetMapping
    public String getById(){
        System.out.println("port===>"+port);
        System.out.println("lessonName===>"+lessonName);
        System.out.println("name===>"+name);
        System.out.println("subject_00===>"+subject_00);
        System.out.println("likes1===>"+likes1);
        System.out.println("tempDir===>"+tempDir);
        System.out.println("tempDir2===>"+tempDir2);
        System.out.println("--------------------");
        System.out.println(env.getProperty("server.port"));
        System.out.println(env.getProperty("enterprise.name"));
        System.out.println("---------------------------");
        System.out.println(myDataSource);
        return "hello springboot...base";
    }
}

5、SpringBoot整合MybatisPlus日志开启

mybatis-plus:
  configuration:
    #开启日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

6、整合druid

先在pom.xml中导入druid依赖

 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.8</version>
        </dependency>

在application.yml配置文件中配置

#配置相关信息
#spring:
#  datasource:
#    driver-class-name: com.mysql.cj.jdbc.Driver
#    url: jdbc:mysql://localhost:3306/mypro
#    username: root
#    password: 999
#    type: com.alibaba.druid.pool.DruidDataSource
​
#下面这个是标准的Druid整个配置
​
spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/mypro
      username: root
      password: 999

7、常用maven依赖

 mybatisplus依赖
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>
  德鲁伊
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.8</version>
        </dependency>
        Lombok
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

8、配置数据层yml

#服务器端口
server:
  port: 80
​
#配置德鲁伊连接池,连接本地数据库
spring:
  datasource:
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
      username: root
      password: 999
​
mybatis-plus:
  global-config:
    db-config:
      table-prefix: tbl_ #表名前缀
      id-type: auto     #id自动生成策略
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  #配置mp日志
 

9、表现层消息一致性处理

  • 设计表现层返回结果的模型类,用于后端与前端进行数据格式统一,也成为前后端数据协议

package com.yi.utils;
​
import lombok.Data;
​
@Data
public class R {
    private Boolean flag;
    private Object data;
    private String msg;
​
    public void R(){
​
    }
​
    public R(Boolean flag) {
        this.flag = flag;
    }
    public R(Boolean flag,Object data) {
        this.flag = flag;
        this.data = data;
    }
​
    public R(Boolean flag,String msg) {
        this.flag = flag;
        this.msg = msg;
    }
​
    public R(String msg) {
        this.flag = false;
        this.msg = msg;
    }
}
​

10、SpringBoot项目快速启动(windows版本)

  • 对SpringBoot项目打包(执行Maven构建指令package)

    • mvn package
  • 在打包的jar包目录下,打开cmd窗口

    • 运行:java -jar springboot.jar

11、SpringBoot打包问题

  • 如果打包后运行出现:xxx(打包的项目名).jar中没有主清单属性,则在pom.xml里加下面的代码

  • 使用SpringBoot提供的maven插件可以将工程打包乘可执行jar包

    •  <build>
              <plugins>
                  <plugin>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-maven-plugin</artifactId>
                  </plugin>
              </plugins>
          </build>

12、Windows端口占用问题

  • 在运行springboot程序的时候,如果显示端口被占用(下面的命令是在cmd下的)

    • #查询端口
      netstat -ano
      #查询指定端口
      netstat -ano |findstr "端口号"
      #根据进程PID查询进程名称
      tasklist |findstr "进程PID号"
      #根据PID杀死任务
      taskkill /F /PID "进程PID号"
      #根据进程名称杀死任务
      taskkill -f -t -im "进程名称"

13、手动启动热部署

  • 在pom.xml文件添加下面的依赖

    • <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-devtools</artifactId>
          <optional>true</optional>
      </dependency>

      激活热部署:在idea里快捷键-->Ctrl+F9

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java+每天进步亿点点

一起学习一起进步一起高薪

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值