将 spring 上下文从 xml 重写为 java

Rewriting spring context from xml to java

我正在将我的 Spring 上下文从 XML 重写为 Java class,但是我不知道下面的这个 bean。谁能帮我?我正在使用 Spring Boot.

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
    <property name="order" value="10"/>
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property 
              name="properties" ref="externalConfigProperties">
    </property>
</bean>

按照这些思路:

@Bean
@Autowired
public PropertyPlaceholderConfigurer properties(Properties externalProperties) {
    PropertyPlaceholderConfigurer propertiesBean = new PropertyPlaceholderConfigurer();
    propertiesBean.setIgnoreUnresolvablePlaceholders(true);
    propertiesBean.setSystemPropertiesModeName("SYSTEM_PROPERTIES_MODE_OVERRIDE");
    propertiesBean.setOrder("10");
    propertiesBean.setProperties(externalProperties);
    return propertiesBean;
}

试试这个:

@Configuration
public class Config {

    @Autowired Properties externalConfigProperties;

    @Bean
    PropertyPlaceholderConfigurer configurer(){
        PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
        configurer.setSystemPropertiesModeName("SYSTEM_PROPERTIES_MODE_OVERRIDE");
        configurer.setOrder(10);
        configurer.setIgnoreUnresolvablePlaceholders(true);
        configurer.setProperties(externalConfigProperties);
        return configurer;
    }

}

对于较新版本的 Spring,建议使用 PropertySourcesPlaceholderConfigurer 而不是 PropertyPlaceholderConfigurer。定义 BeanFactoryPostProcessor 时,应将其注册为 public static @Bean 方法,如 the docs.

中所述

要加载您的属性,请添加指向属性文件位置的 @PropertySource

@Configuration
@PropertySource("path/to/your/config.properties")
public class Config {

    @Bean
    public static PropertySourcePlaceholderConfigurer configurer(){
        PropertySourcePlaceholderConfigurer configurer = new PropertySourcePlaceholderConfigurer();            
        configurer.setOrder(10);
        configurer.setIgnoreUnresolvablePlaceholders(true);         
        return configurer;
    }   
}