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
#设置端口号
server.port=8090
#在controller中可以通过类似下面的方式给一些属性赋值
#@Value("${food.rice}")
#private String rice;
food.meat=猪肉
#可以在配置文件中互相引用
fod.rice=rice${food.meat}
这里用到中文可能会带来乱码问题,需要进行一些设置
在controller类上添加@RestController
/**
* 返回json格式的响应结果,而不是视图(jsp、html)
* 相当于@Controller+@ResponseBody
*/
@RestController
lombok插件使用
1.在idea安装插件,在settings-》plugins-》查找lombok插件,安装并重启
2.
3.引入依赖
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</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
两个文件同时存在时,properties优先级更高
YAML语法规则:
1.大小写敏感
2.使用缩进表示层级关系
3.缩进时不允许使用tab键,只允许使用空格
4.缩进的空格数目不重要,只要同一层级的元素左边对齐就可以
YAML 支持的数据结构有三种
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典 (dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量:(scalars):单个的、不可再分的值
对象:
server:
port: 8090
food:
meat: 烤肉
rice: 拌饭
#流式(flow)语法
#food: {meat: 烤肉,rice: 拌饭}
数组:
server:
port: 8090
food:
meat: 烤肉
rice: 拌饭
sauce:
- 咖喱
- 蜜汁
- 原味
#流式(flow)语法
#food: {meat: 烤肉,rice: 拌饭}
纯量:
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);
}
}
3.密文使用
jasypt:
encryptor:
password: 123456#$%
info:
username: ENC(YESwlbDDGf+RREP4cCU6GQ==)
获取配置中的username使,将被解析成原来的用户名,也就是root