首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在spring中重写PropertiesFactoryBean?

如何在spring中重写PropertiesFactoryBean?
EN

Stack Overflow用户
提问于 2018-09-08 13:55:55
回答 1查看 722关注 0票数 0

我想重写java.util.Properties类中的getProperty()方法,请告知。

1. 1.Spring上下文文件

代码语言:javascript
运行
复制
spring-context.xml

    <bean id="myproperty" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
            <property name="locations" value="classpath:myproperties.properties" />

</bean> 

Java类

代码语言:javascript
运行
复制
public class MyClass{

      @Autowired
        public void setMyproperty(Properties myproperty) {
             this.url=myproperty.getProperty("url");
         }

    }

3.配置文件

代码语言:javascript
运行
复制
myproperties.properties
url=http://stackoverflow.com

仅供参考:我正在从配置文件中提取批次值,我想在从.properties获得值后调用trim(),以避免试图覆盖getProperty()方法的代码冗余。

使用:Spring 4.0

EN

回答 1

Stack Overflow用户

发布于 2018-09-08 18:09:59

扩展spring默认属性占位符(PropertyPlaceholderConfigurer)并捕获它在局部变量中加载的属性。

代码语言:javascript
运行
复制
public class PropertiesUtils extends PropertyPlaceholderConfigurer {

    private static Map<String, String> propertiesMap;
    private int springSystemPropertiesMode = SYSTEM_PROPERTIES_MODE_FALLBACK;

    @Override
    public void setSystemPropertiesMode(int systemPropertiesMode) {
        super.setSystemPropertiesMode(systemPropertiesMode);
        springSystemPropertiesMode = systemPropertiesMode;
    }

    @Override
    protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props) throws BeansException {
        super.processProperties(beanFactory, props);

        propertiesMap = new HashMap<String, String>();
        for (Object key : props.keySet()) {
            String keyStr = key.toString();
            String valueStr = resolvePlaceholder(keyStr, props, springSystemPropertiesMode);
            propertiesMap.put(keyStr, valueStr);
        }
    }

    public static String getProperty(String name) {
        return propertiesMap.get(name).toString();
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52232472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档