Spring Property

Spring PropertySourcesPlaceholderConfigurer 工作原理

加密Spring加载的Properties文件

这个版本太老,但是思想是正确的。

Spring的PropertySourcesPlaceholderConfigurer的一点点小东东

PropertyPlaceholderConfigurer

扩展 PropertyPlaceholderConfigurer 对prop文件中的属性加密

对于 PropertySourcesPlaceholderConfigurer 的继承在 3.1 之后已经被废弃了。所以采用 PropertyPlaceholderConfigurer 的方式。

  • spring-property-config.xml
  [xml]
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="encryptPropertyPlaceholderConfigurer" class="com.ryo.spring.learn.old.property.extern.MyPropertyPlaceholderConfigurer"> </bean> </beans>
  • MyPropertyPlaceholderConfigurer.class

这里为了测试方便,直接使用构造器初始化的形式。

  [java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.ryo.spring.learn.old.property.extern; import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; import java.util.Properties; public class MyPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer { public MyPropertyPlaceholderConfigurer() { Properties properties = System.getProperties(); properties.setProperty("name", "ryo"); this.setProperties(properties); } }
  • MyPropertyPlaceholderConfigurerTest.class
  [java]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:spring-property-config.xml", }) public class MyPropertyPlaceholderConfigurerTest { @Value("${name}") private String name; @Test public void nameTest() { System.out.println(name); } }

测试输出结果:

  [plaintext]
1
ryo

可见,可以直接将设置的属性在 spring 中直接使用。原来此处就不赘述了。

讲下简单的用途:

1、对敏感信息进行加密

2、配置可以统一获取。根据不同的情况获取不同的配置属性。直接设置到 Properties 中。

Default Value

Spring placeholder默认值设置

More

Spring技术内幕:深入解析Spring架构

spring-framework 分类

Spring加载resource时classpath*:与classpath:的区别