热部署
pom.xml
如果你是使用eclipse,请忽略,但如果你是使用IDEA,由于idea 没有保存修改的,也就是说在idea中并不会因为你ctrl+s 就重新编译代码。那么就需要额外的配置
在pom文件中,增加编译插件,让代码有变动的时候也编译
<!--热部署依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--没有该项配置,热部署不会起作用-->
<configuration>
<fork>true</fork>
</configuration>
</plugin>
配置文件
application.properties
# 页面修改后立即生效,关闭缓存,立即刷新
spring.thymeleaf.cache=false
# 热部署生效
spring.devtools.restart.enabled=true
# 设置需要重启的目录
spring.devtools.restart.additional-paths=src/main/java
# 设置不需要重启的目录
spring.devtools.restart.exclude=static/**,public/**,WEB-INF/**
# 为 mybatis 设置,生产环境可删除
# restart.include.mapper=/mapper-[\\w-\\.]+jar
# restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar
设置 IDEA 环境自动编译
在编译器选项中勾选 Build project automatically 选项
使用快捷键:Ctrl + Alt + Shift + / 调出 Registry 窗口,勾选 compiler.automake.allow.when.app.running 和 decompiler.use.line.mapping 选项
不同版本可能没有 compiler.automake.allow.when.app.running 选项, 忽略
测试class和模板引擎的配置文件修改都会生效, 需要重新编译
手动:修改完代码,按快捷键Ctrl+F9,手动构建项目,或者只修改单个类文件的话,按Ctrl+Shift+F9,重新编译该类文件,即可触发重启服务。
数据库密码加密
1. 引入依赖
<!--数据库加密解密-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.14</version>
</dependency>
<!--数据库加密解密结束-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>1.14</version>
</dependency>
2. yml配置添加盐值
# jasypt
jasypt:
encryptor:
#加密的算法,这个算法是默认的
algorithm: PBEWithMD5AndDES
# jasypt加密的盐值
password: 123456
iv-generator-classname: org.jasypt.iv.NoIvGenerator
3.生成加密后的密匙
@Test
public void test() {
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword("123456");//yml文件里设置的key
String url = encryptor.encrypt("jdbc:mysql://localhost:3306/数据库名称?serverTimezone=UTC");
String name = encryptor.encrypt("数据库用户名");
String password = encryptor.encrypt("数据库密码");
String url1 = encryptor.decrypt(url);
String name1 = encryptor.decrypt(name);
String password1 = encryptor.decrypt(password);
System.out.println("url密文:"+url);
System.out.println("url明文:"+url1);
System.out.println("username密文:"+name);
System.out.println("username明文:"+name1);
System.out.println("password密文:"+password);
System.out.println("password明文:"+password1);
}
将测试用例中生成的密匙添加到application.yml配置中,数据库密文使用ENC进行标识
spring:
# 数据库配置
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: ENC(l02FrVAaBYPpTYJ/6eIyoqgoyBH/Ay1PwFcyFfQrkhOyUeh8X4/ipvMxMqSeTfdfxXUZpGnrbYDB8Lf913AgZEYRl4yFe0rZ)
username: ENC(9yyRfS8ljI2kh422XHra0g==)
password: ENC(nCZrXZJSahl2xkXbu9+C/Q==)