覆盖从不同项目添加的项目中的bean

时间:2018-05-16 03:04:41

标签: java spring

我有一个项目A,其中项目B被定义为依赖项。项目B有一个在xml中定义的bean,它读取一些属性。我无权修改项目B,但需要在项目A中使用这个bean,有没有办法可以使用这个bean,但是这个bean应该读取新属性而不是现在读取的属性。

2 个答案:

答案 0 :(得分:0)

您可以使用新类扩展bean,并在新类中覆盖所需的属性。

例如。以下bean在项目B中:

<bean id="customer" class="com.napster.Customer">
    <property name="country" value="India" />
</bean>

在你的项目中扩展该bean,这样你将拥有该bean所暴露的所有行为,你可以覆盖某些属性。

<bean id="retailCustomer" class="com.retail.Customer" parent="customer">
    <property name="country" value="United States" />
</bean>

只要bean在同一个applicationContext中加载,继承就应该有效。

答案 1 :(得分:0)

我的项目中有类似情况,下面的配置类(在项目A中)按预期工作:

float myTabLayoutSize = 360;
if (DeviceInfo.getWidthDP(this) >= myTabLayoutSize ){
    tabLayout.setTabMode(TabLayout.MODE_FIXED);
} else {
    tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
}

重点是将新bean定义为主要。