【问题标题】:How to remove a property from a spring bean如何从 spring bean 中删除属性
【发布时间】:2014-02-18 03:11:44
【问题描述】:

我想从 spring bean 中删除一个属性, 这个属性可能是一个对象或java原始类型(String,int,map..)

<bean id="test" class="me.test.xxxx">
       <property name="user" ref="me.test.user"/>
       <property name="other" ref="me.test.other"/>
</bean>

我创建了一个新类来实现BeanFactoryPostProcessor 并覆盖PostProcessBeanFactory

我将在此方法中删除所有我不想要的 bean,但我不知道如何从 bean 属性中删除对象属性。

谢谢。

【问题讨论】:

  • delete beans 和 delete object 属性好像不够清楚,可以在不想使用注入属性的方法中重新定义对象属性
  • “删除” bean 属性是什么意思?将其值设置为null/默认值或实际从 bean 中删除属性(字节码操作?)
  • 看起来像X Y problem。请澄清你所做的事情的目的。
  • @AnthonyAccioly 是的,从 bean 中删除属性。

标签: java spring


【解决方案1】:

不清楚你想要实现什么,但是如果你想移除,例如,

   <property name="other" ref="me.test.other"/>

在初始化 bean 之前,在您的上下文中声明一个 BeanFactoryPostProcessor bean,并使用以下实现

@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
    BeanDefinition beanDefinition = beanFactory.getBeanDefinition("test"); // get the bean definition in some way
    if (beanDefinition != null) {
        beanDefinition.getPropertyValues().removePropertyValue("other"); // remove the property value based on some criterion
    }
}

【讨论】:

    猜你喜欢
    • 2016-10-08
    • 2011-10-14
    • 1970-01-01
    • 2019-06-02
    • 2012-12-24
    • 1970-01-01
    • 2015-05-02
    • 2013-01-15
    • 2013-08-15
    相关资源
    最近更新 更多