是否可以使用基于注释的配置来实现相同的bean继承(@Bean
etc)?
<bean id="inheritedTestBean" abstract="true"
class="org.springframework.beans.TestBean">
<property name="name" value="parent"/>
<property name="age" value="1"/>
</bean>
<bean id="inheritsWithDifferentClass"
class="org.springframework.beans.DerivedTestBean"
parent="inheritedTestBean" init-method="initialize">
<property name="name" value="override"/>
<!-- the age property value of 1 will be inherited from parent -->
</bean>
http://docs.spring.io/spring/docs/4.1.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#beans-child-bean-definitions http://docs.spring.io/spring/docs/4.1.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#beans-child-bean-definitions
java 配置中没有抽象 bean 的概念,因为 java 语言已经拥有您需要的一切。不要忘记抽象 bean 根本不暴露在上下文中,它是某种模板。
您可以按如下方式重写上面的代码:
@Configuration
public class Config {
@Bean
public DerivedTestBean() {
DerivedTestBean bean = new DerivedTestBean();
initTestBean(bean);
bean.setName("override");
return bean;
}
private void initTestBean(TestBean testBean) {
testBean.setName("parent");
testBean.setAge(1);
}
}
If the initTestBean
应该共享,你也可以将其公开并注入Config
如果需要的话,可以在其他地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)