zno2

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']} 各有优势,需视情况使用 

 

posted on   zno2  阅读(213)  评论(0编辑  收藏  举报

编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)

导航

点击右上角即可分享
微信分享提示