2014-02-18 158 views
0

我想從一個彈簧豆刪除屬性, 該屬性可以是對象或Java原始上下的類型(字符串,整數,地圖..)如何從彈簧豆刪除屬性

<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屬性中刪除一個對象的屬性。

謝謝。

+0

刪除bean和刪除對象屬性似乎不夠清楚,您可以在不想使用注入屬性的方法中重新定義對象屬性 – bjhaid

+0

「刪除」bean屬性是什麼意思?將其值設置爲'null' /默認值或實際從bean中刪除屬性(字節碼操作?) –

+0

看起來像[XY問題](http://meta.stackexchange.com/questions/66377/what-is-在-XY-問題)。請澄清你在做什麼的目的。 –

回答

1

目前尚不清楚你想要達到什麼樣的,但如果你想刪除,例如,

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

的bean初始化之前,在你的上下文中有以下實現聲明BeanFactoryPostProcessor

@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 
    } 
}