java spring中对properties属性文件加密及其解密

来源:互联网 发布:python hsv颜色直方图 编辑:程序博客网 时间:2024/05/22 00:19

之前在项目里面连接数据库需要将密码解密,而且连接好多数据库,并且有的数据库需要解密有的直接连接就可以。

这样代码的可读性特别低,在连接数据库的时候都要现连接:

Properties prop = new Properties();prop.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("lecture.properties"));Session s = Session.getInstance(prop);// OA数据库连接地址String oaIp = s.getProperty("oaIp");Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:" + "thin:@" + oaIp;// OA用户名String user = s.getProperty("oaUsername");// OA密码String password = s.getProperty("oaPassword");PropertiesEncryptFactoryBean encryptor = new PropertiesEncryptFactoryBean();

那么我们可以将数据库的连接信息放到配置文件里面,并且在配置文件解密,这样在连接数据库的时候只需在选择加载那个连接:

(1)在spring的某一个xml配置文件中加入加载解密的配置属性代码:

这里的classpath一定别写错了

<bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig"><property name="algorithm" value="PBEWithMD5AndDES" /><property name="password" value="jesong" /></bean><bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"><property name="config" ref="environmentVariablesConfiguration" /></bean><bean id="propertyConfigurer"class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer"><constructor-arg ref="configurationEncryptor" /><property name="ignoreResourceNotFound" value="false"/><property name="locations"><list><value>classpath:config.properties</value></list></property></bean>   
(2)数据源配置

<!-- 数据源配置, 使用 BoneCP 数据库连接池 --><bean id="OAdataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >     <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /><!-- 基本属性 url、user、password --><property name="url" value="${oaIp}" ></property><property name="username" value="${oaUsername}" /><property name="password" value="${oaPassword}" /></bean><bean id="gddataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >     <!-- 数据源驱动类可不写,Druid默认会自动根据URL识别DriverClass -->    <property name="driverClassName" value="${jdbc.driver}" /><!-- 基本属性 url、user、password --><property name="url" value="${gdIp}" /><property name="username" value="${gdUsername}" /><property name="password" value="${gdPassword}" /></bean>

(3)在相应的需要加载哪一个数据库:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/spring/datasource.xml");DriverManagerDataSource dataSource=(DriverManagerDataSource) applicationContext.getBean("OAdataSource");System.out.println(dataSource.getUrl());con=dataSource.getConnection();System.out.println("OA数据库连接成功!");
(4)另外在数据库配置文件中config.properties文件中,如果哪一个需要解密,那么需要加上前缀ENC(**********):

password=ENC(********)





0 0
原创粉丝点击