zoukankan      html  css  js  c++  java
  • context:propertyPlaceholder

    Activates replacement of ${...} placeholders by registering a PropertySourcesPlaceholderConfigurer within the application context. Properties will be resolved against the specified properties file or Properties object -- so called "local properties", if any, and against the Spring Environment's current set of PropertySources. Note that as of Spring 3.1 the system-properties-mode attribute has been removed in favor of the more flexible PropertySources mechanism. However, Spring 3.1-based applications may continue to use the 3.0 (and older) versions of the spring-context schema in order to preserve system-properties-mode behavior. In this case, the traditional PropertyPlaceholderConfigurer component will be registered instead of the new PropertySourcesPlaceholderConfigurer. See ConfigurableEnvironment javadoc for more information on using.

    https://docs.spring.io/spring/docs/4.3.11.RELEASE/spring-framework-reference/htmlsingle/#xsd-config-body-schemas-context-pphc

    方式一:

    <context:property-placeholder location="classpath:foo.properties"/>
    @Component
    public class FooProperties {
        
        public static String fooName;
        
        @Autowired
        public void setFooName( @Value("${foo.name}") String fooName) {
            FooProperties.fooName = fooName;
        }
        
    }

    方式二:

        <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="locations">
                <value>classpath:foo.properties</value>
            </property>
        </bean>
    @Component
    public class FooProperties {
        
        public static String fooName;
        
        @Autowired
        public void setFooName( @Value("${foo.name}") String fooName) {
            FooProperties.fooName = fooName;
        }
        
    }

    方式三:

        <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="properties">
                <value>
                    foo.name=aaa
                    foo.age=12
                </value>
            </property>
        </bean>
    @Component
    public class FooProperties {
        
        public static String fooName;
        
        @Autowired
        public void setFooName( @Value("${foo.name}") String fooName) {
            FooProperties.fooName = fooName;
        }
        
    }

    方式四:

            new PropertyPlaceholderConfigurer() {
    
                @Override
                protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props)
                        throws BeansException {
                    // TODO Auto-generated method stub
                    super.processProperties(beanFactoryToProcess, props);
                }
            }

    重写默认placeholder 配置器

    注: @Value 通过实例方法给静态变量注入值的时候需要配合 @Autowired 使用

             @Value 可以直接为实例变量注入值 ${...} or "#{...['XXX']}

             @Value("${...}")    与   @Value("#{...['XXX']} 各有优势,需视情况使用 

  • 相关阅读:
    AngularJS 简介
    Java基础知识学习(九)
    Java基础知识学习(八)
    算法(二)
    Java基础知识学习(七)
    Java基础知识学习(六)
    Java基础知识学习(五)
    Java基础知识学习(四)
    Java基础知识学习(三)
    Java基础知识学习(二)
  • 原文地址:https://www.cnblogs.com/zno2/p/4691904.html
Copyright © 2011-2022 走看看