带有注释的Bean定义继承?

mem*_*und 12 java spring

是否可以使用基于注释的配置(@Bean等)实现相同的bean继承?

<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>
Run Code Online (Sandbox Code Playgroud)

http://docs.spring.io/spring/docs/4.1.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#beans-child-bean-definitions

Ste*_*oll 17

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);
    } 
}
Run Code Online (Sandbox Code Playgroud)

如果initTestBean应该共享,您也可以将其公开并Config在需要时注入其他地方.