Spring Property

Spring PropertySourcesPlaceholderConfigurer 工作原理

加密Spring加载的Properties文件

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

Spring的PropertySourcesPlaceholderConfigurer的一点点小东东

PropertyPlaceholderConfigurer

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

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

  • spring-property-config.xml
<?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

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

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
@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);
    }

}

测试输出结果:

ryo

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

讲下简单的用途:

1、对敏感信息进行加密

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

Default Value

Spring placeholder默认值设置

More

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

spring-framework 分类

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