SpringBoot系列9-使用jasypt自定义stater运行时动态传入加密密码

猿份哥 1年前 ⋅ 1056 阅读 ⋅ 0 个赞
文章目录
  1. 1.新建springboot-encryption-configuration项目实现stater
  2. 2.pom文件引入jasypt
  3. 3.在resources/support/下配置application.properties文件
  4. 4.在resources/support/下根据不同环境配置文件,此处我的开发和测试环境application-${spring.profiles.active}.properties文件的加密内容一样。请你根据你的情况来配置
  5. 5.定义SupportConfiguration.java
  6. 6.将上面项目安装到maven库
  7. 7.新建springboot-encryption-configuration-demo测试stater
  8. 8.pom文件引入stater依赖
  9. 9.编写测试类DemoApplicationTests.java
  10. 10.运行
  11. 11.大功告成:运行测试类DemoApplicationTests的contextLoads方法console打印出原内容如下

介绍如何自定义一个stater将jasypt封装为一个stater供多个项目使用,同时运行时动态传入加密密码

新建springboot-encryption-configuration项目实现stater

pom文件引入jasypt

   <dependencies>
        <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>com.github.ulisesbocchio</groupId>
			<artifactId>jasypt-spring-boot-starter</artifactId>
			<version>2.1.0</version>
		</dependency>
   </dependencies>

说明:

spring-boot-starter 自定义stater引入则具备stater的能力;

jasypt-spring-boot-starter自定义stater引入则具备加密解密能力

在resources/support/下配置application.properties文件

jasypt.encryptor.password=${PWD}

说明:接收运行时传入的解密密码

在resources/support/下根据不同环境配置文件,此处我的开发和测试环境application-${spring.profiles.active}.properties文件的加密内容一样。请你根据你的情况来配置

application-dev.properties和application-test.properties

u.username=ENC(uF42uO9PxXDQYtnYe5++ebszGCkWXdY1NynJ+5Lptsg=)
u.pwd=ENC(+v5XN2Tv+d6VDfpeapME+S6vw2nOfE9L/1sjh6UFzso=)

定义SupportConfiguration.java

/**
 * @author tiankonglanlande
 * @description
 * @createTime 2018 - 11 - 20 11:53
 */
@EnableEncryptableProperties
@EncryptablePropertySources({@EncryptablePropertySource(value = "classpath:support/application.properties", ignoreResourceNotFound = true),
        @EncryptablePropertySource(value = "classpath:support/application-${spring.profiles.active}.properties", ignoreResourceNotFound = true)})
public class SupportConfiguration {

}

说明:

@EnableEncryptableProperties启用属性加密

@EncryptablePropertySource指定加密文件(这里的application-${spring.profiles.active}.properties是根据环境动态加载配置文件)

将上面项目安装到maven库

我这里是使用的idea工具选择Maven Project–>springboot-encryption-configuration –> clean –> 然后compile –> 最后install

新建springboot-encryption-configuration-demo测试stater

pom文件引入stater依赖

    <!--引入stater-->
    <dependency>
        <groupId>com.tiankonglanlande.cn.springboot.stater</groupId>
        <artifactId>springboot-encryption-configuration-stater</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

编写测试类DemoApplicationTests.java

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
	@Value("${u.username}")
	private String username;
	@Value("${u.pwd}")
	private String pwd;

	@Test
	public void contextLoads() {
		System.out.println("读取username:"+username);
		System.out.println("读取pwd:"+pwd);

	}
}

运行

说明: 点击运行左侧栏的绿色按钮:此时会报错

idea选择 Edit Configurations–> JUnit –>选择 DemoApplicationTests.contextLoads –> 在右边的VM options 填入启动的环境和加密密码 -Dspring.profiles.active=test -DPWD=tiankonglanlande

大功告成:运行测试类DemoApplicationTests的contextLoads方法console打印出原内容如下

读取username:tiankonglanlande
读取pwd:tiankonglanlande_pwd

源码下载链接

原文链接: http://www.lskyf.com/view/30

作者:天空蓝蓝的,版权所有,欢迎保留原文链接进行转载:)


全部评论: 0

    我有话说:

    Spring Boot系列8-使用jasypt加密配置文件内容简单版

    文章目录 1.为什么配置文件需要加密 2.首先引入pom依赖文件 3.在application.properties或者application.yml文件中配置加密密码 4.获取加密内容例如:我想

    SpringBoot系列18-validation分组校验+定义参数校验器

    原文链接: https://www.lskyf.com/post/212 分组-加入依赖 <dependencies> <dependency> <groupId>

    spring boot系列4-定时任务-springboot带的scheduled超级简单

    需求:创建一个每天凌晨0点执行的定时任务1.创建任务 /** * @author 天空蓝蓝的 */ @Slf4j @EnableScheduling @Component public class

    Spring Boot系列6-SpringBoot使用servlet

    介绍在SpringBoot中如何使用servlet pom.xml <dependency> <groupId>org.springframework.boot<

    Spring Boot系列7-SpringBoot+mybatis+druid+TypeHandler

    介绍在SpringBoot中集成mybatis和druid以及定义TypeHandler 创建数据库表 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- --------------------...

    Spring Boot系列5-定时任务-springboot整合quartz实现动态定时任务

    MyJob实现Job接口,重写execute方法在里面操作我们要执行的业务逻辑。 @Slf4j public class MyJob implements Job { @Autowired private MyService myService;...

    Spring Boot系列1-helloword

      使用springboot简单轻松创建helloword SpringBoot系列1-helloword 关于springboot这是摘自官方的一段话 Spring Boot

    springboot项目运行在docker中 file.exists()返回false没有报错

      springboot项目运行在docker中 file.exists()返回false没有报错   表现:在windows运行正确,但是打包后运行在docker容器中找不到

    定义idea File and Code Templates

    1.定义idea File and Code Templates 1.1 给class添加作者,描述,创建时间 #if (${PACKAGE_NAME} && ${PACKAGE

    SpringBoot系列10-文件上传

    文章目录 1.先来最简单的 2.设置文件大小,请求大小 3.多文件上传 怎样使用最简单的方式上传文件,如何上传多个文件呢 先来最简单的 pom.xml文件引入依赖文件 <

    避免加班有那些方法呢?

      不想加班,但是又不得不加吧,我们怎么才能不加班呢给个人觉得可以从这几个方面出发 1.找到加班的原因,尽可能快速的完成工作 2.提高工作效率提高技能 3.找个不加班的公司  

    Spring Boot系列2-全局统一异常处理

    原创: 天空和唯美 天空唯美  点击查看原文 为什么要全局统一异常处理呢?如果系统发生了异常,不做统一异常处理,前端会给用户展示一大片看不懂的文字。做统一异常处理后当

    SpringBoot系列16-Spring boot2x快速整合swagger2(Open Api3注解版)

    前言:为什么要使用swagger 传统的web开发,前端和后端的HTTP接口文档交互都是使用word文档记录,存在不仅限于这些问题;不能时时更新,不易于传输etc. swagger2可以使用配置文件

    spring boot系列3-四步完成观察者事件发布接收(发送消息接收消息)使用异步方不阻塞主线程

    1.首先Application开启异步 @SpringBootApplication @EnableAsync public class DemoApplication { public static void main(String[] arg...

    加入公众号
    加入公众号