在配置quartz时,为了保密某些信息(特别是账号密码),通常会使用密文。那么在实际使用这些配置信息时,需要进行解密。本文提供一种解密方法如下:

(1)假设在properties文件中加密了账号密码

 1 #============================================================================
 2 # 基础配置
 3 #============================================================================
 4 org.quartz.scheduler.instanceName = JobScheduler
 5 org.quartz.scheduler.instanceId = AUTO
 6 org.quartz.scheduler.rmi.export = false
 7 org.quartz.scheduler.rmi.proxy = false
 8 org.quartz.scheduler.wrapJobExecutionInUserTransaction = false
 9
10 #============================================================================
11 # 调度器线程池配置
12 #============================================================================
13 org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
14 org.quartz.threadPool.threadCount = 20
15 org.quartz.threadPool.threadPriority = 5
16 org.quartz.jobStore.misfireThreshold = 60000
17
18 #============================================================================
19 # Configure JobStore 作业存储配置
20 #============================================================================
21 org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
22 org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
23 org.quartz.jobStore.useProperties = true
24 org.quartz.jobStore.tablePrefix = QRTZ_
25 org.quartz.jobStore.dataSource = qzDS
26
27 org.quartz.jobStore.isClustered = true
28 org.quartz.jobStore.clusterCheckinInterval = 15000
29
30 #============================================================================
31 # JDBC
32 #============================================================================
33 org.quartz.dataSource.qzDS.driver = com.mysql.jdbc.Driver
34 org.quartz.dataSource.qzDS.URL = jdbc:mysql://localhost:3306/job_scheduler
35 org.quartz.dataSource.qzDS.user = *****************************
36 org.quartz.dataSource.qzDS.password = *****************************
37 org.quartz.dataSource.qzDS.maxConnections = 5
38 org.quartz.dataSource.qzDS.validationQuery = select 0 from dual

quartz_config.properties

  注意:properties文件名不能是quartz.properties,否则Quartz可能还是会使用解密前的配置信息。

(2)写SchedulerConfig.java文件解密账号密码后使用

import org.quartz.Scheduler;
import org.quartz.ee.servlet.QuartzInitializerListener;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.wcc.crypt.Crypter;
import org.wcc.crypt.CrypterFactory;import java.io.IOException;
import java.util.Properties;@Configuration //类似xml中的<beans>标签,一般和@bean注解一起使用来配置一个Bean,让Spring来管理它的生命周期
public class SchedulerConfig {@Bean(name="SchedulerFactory")public SchedulerFactoryBean schedulerFactoryBean() throws IOException {SchedulerFactoryBean factory = new SchedulerFactoryBean();factory.setQuartzProperties(quartzProperties());return factory;}/*** 加载Quartz配置**/@Beanpublic Properties quartzProperties() throws IOException {//使用Spring的PropertiesFactoryBean对属性配置文件进行管理PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();propertiesFactoryBean.setLocation(new ClassPathResource("/quartz_config.properties"));propertiesFactoryBean.afterPropertiesSet();Properties properties = propertiesFactoryBean.getObject();// 账号密码解密Crypter crypter = CrypterFactory.getCrypter(CrypterFactory.AES_CBC);String user = properties.getProperty("org.quartz.dataSource.qzDS.user");if (user != null) {user = crypter.decrypt(user);properties.setProperty("org.quartz.dataSource.qzDS.user", user);}String password = properties.getProperty("org.quartz.dataSource.qzDS.password");if (password != null) {password = crypter.decrypt(password);properties.setProperty("org.quartz.dataSource.qzDS.password", password);}return properties;}/*** 初始化Quartz监听器,让Spring boot启动时初始化Quartz**/@Beanpublic QuartzInitializerListener executorListener() {return new QuartzInitializerListener();}/*** 通过SchedulerFactoryBean获取Scheduler的实例*/@Bean(name="Scheduler")public Scheduler scheduler() throws IOException {return schedulerFactoryBean().getScheduler();}
}

转载于:https://www.cnblogs.com/xiongxx/p/9018314.html

【Quartz】解密properties配置文件中的账号密码相关推荐

  1. Java删除properties配置文件中指定键值的代码

    将开发过程较好的一些内容片段记录起来,下面的内容段是关于Java删除properties配置文件中指定键值的内容. public static boolean deleteKeyValue4Pro(S ...

  2. java修改配置文件参数_在java类中获取在.properties配置文件中设置的参数

    如何获取.properties配置文件中的参数,我在网上查了半天没弄明白,后来在以前的项目中找到了,就写下来,避免遗忘. 1.配置文件:message_product.properties total ...

  3. python获取路由器数据包pppoe_利用PPPOE获取路由器中宽带账号密码

    pppoe工作原理 PPPoE协议的工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是获得PPPoE终结端(在局端的ADSL设备上)的以太网MAC地址,并建立一个唯一的PPPoE SESSIO ...

  4. SpringBoot读取properties配置文件中的数据

    常用三种方法: 1.@Value注解读取 2.使用Environment读取 3.使用@ConfigurationProperties注解读取 代码: 链接:https://pan.baidu.com ...

  5. druid 非对称加密_springboot配置文件中mysql的密码进行加密

    一.引入依赖 方式一: com.alibabadruid1.2.1 方式二: com.alibabadruid-spring-boot-starter1.2.1 二.对密码加密 加密命令 java - ...

  6. 加载程序中数据库账号密码加密策略wallet_04

    文章目录 1. 切换到oracle用户 2. 创建wallet目录 3. 创建wallet 账户 4. 查看创建的wallet 5. 创建wallet目录 6. 查看证书 7. 把证书拷贝到客户端 8 ...

  7. SpringBoot、SpringCloud读取bootstrap.yml或者application.properties配置文件中的参数

    问题还原: 在做项目时,需要配置所上传Excel文件的存储路径,用于将Excel文件存储到所配置的路径下.此路径可以写死到代码里,但是不方便:也可存到数据库表中,但是麻烦:我们一般都是配置到boots ...

  8. 干货!分享解决python脚本中涉及账号密码泄露的方案(pyarmor)

    Python加密脚本的通用方案介绍 最近想要解决关于python源码加密的问题,相信这也是许多公司的共性问题.简单地说就是好多测试运维脚本中直接编写了连接各种服务器的代码(包括应用服务器,数据库服务器 ...

  9. JAVA把账号密码存入数据库_jdbc,采用properties文件保存数据库账号密码以及链接...

    1,在根目录创建 mysql.properties 文件,使用这个文件是为了方便以后生成class文件后可修改链接任意数据库 2,导入jar包,自行百度下载. 3,写一个 SqlUtil.class ...

最新文章

  1. 《你的灯亮着吗》读书笔记3
  2. c++生成光栅条纹程序_【光学学报】激光分束,自由曲面分束器能挑战相位光栅吗?...
  3. ASP.NET Core 运行原理解剖[1]:Hosting
  4. POSIX 串口编程指南
  5. 蒸汽朋克简单图形免扣PNG素材,让设计艺术变得简单
  6. 使用 Git 生成 SSH Key 并将项目上传到 GitHub
  7. SVD在推荐系统中的应用
  8. 李宏毅自然语言处理——问答任务
  9. 数据库并发中的串行化
  10. Java把日期转为周几
  11. 1602显示字符串的C语言程序,LCD1602程序显示字符串
  12. 腐蚀rust服务器命令_腐蚀rust服务器命令一览 腐蚀rust有哪些服务器命令
  13. linux重装系统驱动,linux系统下安装驱动方法
  14. 升级啦!二维码签到适用PC+andriod+IOS-PHP源码-开源代码
  15. [SHOI2008] 小约翰的游戏
  16. 城市规划者建议将社区的所有马桶更换为每次冲水仅需2升的节水马桶。
  17. android 阿拉伯语符号,阿拉伯文符号
  18. 2016年,上海的互联网企业是否值得加入?
  19. css实现文字两端对齐
  20. 最强攻略迎战双十一大促

热门文章

  1. 关联与依赖区别理解(原)
  2. linux常用文本操作命令
  3. Python包管理整理:setuptool管理python相关的包
  4. LeetCode简单题目(#263 #268 #278 #283 #290)-5道(数字、字符串)
  5. JavaScript基础知识(四)
  6. Bootstrap手风琴菜单
  7. iPhone+wp7并行初体验
  8. 图像语义分割python_图像语义分割出的json文件和原图,用plt绘制图像mask
  9. epoll编程实例客户端_深入底层探析网络编程之多路复用器(select,poll,epoll)
  10. Hadoop不同版本数据传输distcp问题设置