如何从spring bean中删除属性

时间:2014-02-18 03:11:45

标签: java spring

我想从spring bean中删除一个属性, 此属性可以是对象或java primitive-ish类型(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属性中删除对象属性。

感谢。

1 个答案:

答案 0 :(得分: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
    }
}