Part 1 常用配置

1.自定义banner.txt
https://www.bootschool.net/ascii
2.application.properties(在resources目录下建立,里面可以写上常用配置)
https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/appendix-application-properties.html#common-application-properties
application.properties

  1. #设置端口号
  2. server.port=8090
  3. #在controller中可以通过类似下面的方式给一些属性赋值
  4. #@Value("${food.rice}")
  5. #private String rice;
  6. food.meat=猪肉
  7. #可以在配置文件中互相引用
  8. fod.rice=rice${food.meat}

这里用到中文可能会带来乱码问题,需要进行一些设置
image.png
image.png
image.png
在controller类上添加@RestController

  1. /**
  2. * 返回json格式的响应结果,而不是视图(jsp、html)
  3. * 相当于@Controller+@ResponseBody
  4. */
  5. @RestController

lombok插件使用

1.在idea安装插件,在settings-》plugins-》查找lombok插件,安装并重启
2.image.png
3.引入依赖

  1. <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
  2. <dependency>
  3. <groupId>org.projectlombok</groupId>
  4. <artifactId>lombok</artifactId>
  5. <version>1.18.12</version>
  6. <scope>provided</scope>
  7. </dependency>

lombok常用注解
1.@Getter/@Setter用于代替get/set方法
2.@Data:包含@ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter 和@RequiredArgsConstructor的组合,通常情况下,基本上使用这个注解就足够了
3.@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor:无参构造器、部分参数构造器、全参构造器

java编译原理 —— javac命令 (编译器)
编译:将一种语言规范 转化成 另一种语言规范的过程
javac: 将人能理解的java语言 转化成 jvm能理解的二进制字节
javac编译步骤:词法分析 -> 语法分析 -> 语义分析 -> 字节码生成
词法分析:检查关键字 分析结果-> 规范化的token流
语法分析:把检查出来的关键字(一个个代码块) 查看是否符合语言的规范分析结果 -> 抽象语法树 (结构化的语法表达形式)
语义分析:把难懂的复杂的语法 转化成简单分析结果 -> 注解的抽象语法树
字节码生成遍历语法树 -> 符合jvm规范的二进制代码

lombok实现的原理:
主要是通过抽象语法树(AST),在编译处理后,匹配到有其注解的 类,那么注解编译器就会自动去匹配项目中的注解对应到在lombok语法树中的 注解文件,并经过自动编译匹配来生成对应类中的getter或者setter方法,达到 简化代码的目的。

YAML

image.png
两个文件同时存在时,properties优先级更高

YAML语法规则:
1.大小写敏感
2.使用缩进表示层级关系
3.缩进时不允许使用tab键,只允许使用空格
4.缩进的空格数目不重要,只要同一层级的元素左边对齐就可以

YAML 支持的数据结构有三种
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典 (dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量:(scalars):单个的、不可再分的值

对象:

server:
  port: 8090

food:
  meat: 烤肉
  rice: 拌饭

#流式(flow)语法
#food: {meat: 烤肉,rice: 拌饭}

数组:
image.png

server:
  port: 8090

food:
  meat: 烤肉
  rice: 拌饭
  sauce:
    - 咖喱
    - 蜜汁
    - 原味

#流式(flow)语法
#food: {meat: 烤肉,rice: 拌饭}

image.png
纯量:
image.png
YAML一些特殊符号
—-表示一个文件的开始

spring:
  profiles:
    active: dev#选择了开发环境,运行时端口号会是8090

---
#开发环境
spring:
  profiles: dev

server:
  port: 8090

---
#生产环境
spring:
  profiles: prod

server:
  port: 8010

配置敏感字段加密

Jasypt是一个Java库,可以使开发者不需太多操作来给Java项目添加基本加密功能,而且不需要知道加密原理。 Jasypt也即Java Simplified Encryption。默认使用的是PBEWITHMD5ANDDES算法。
1.引入依赖

<!-- https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter -->
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>

2.加密信息

package com.duyi.util;

import org.jasypt.util.text.BasicTextEncryptor;

public class JasyptUtil {
    public static void main(String[] args) {

        BasicTextEncryptor encryptor=new BasicTextEncryptor();
        encryptor.setPassword("123456#$%");//加密所需的盐
        String username=encryptor.encrypt("root");//被加密的数据,比如用户名

        System.out.println(username);
    }
}

image.png
3.密文使用

jasypt:
  encryptor:
    password: 123456#$%

info:
  username: ENC(YESwlbDDGf+RREP4cCU6GQ==)

获取配置中的username使,将被解析成原来的用户名,也就是root