【问题标题】:Rewriting spring context from xml to java将spring上下文从xml重写为java
【发布时间】:2015-05-21 12:31:12
【问题描述】:

我正在将我的 Spring 上下文从 XML 重写为 Java 类,但我不知道下面的这个 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>

【问题讨论】:

    标签: java spring-boot


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 是的 - 这个 :) 我最初将 bean 上的属性误认为是属性的一部分。当我正在编辑我的答案时,这个答案突然出现了。
    【解决方案2】:

    对于较新版本的 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;
        }   
    }
    

    【讨论】:

      【解决方案3】:

      按照这些思路:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多