Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @组件与父级?_Java_Spring - Fatal编程技术网

Java @组件与父级?

Java @组件与父级?,java,spring,Java,Spring,有没有办法将与@Component注释一起使用(使用注释创建Springbean) 我想使用@Component注释创建具有“springparent”的springbean 有可能吗?在我的评论之后,这段XML <bean id="base" abstract="true"> <property name="foo" ref="bar"/> </bean> <bean class="Wallace" parent="base"/> &l

有没有办法将
与@Component注释一起使用(使用注释创建Springbean)

我想使用@Component注释创建具有“springparent”的springbean


有可能吗?

在我的评论之后,这段XML

<bean id="base" abstract="true">
    <property name="foo" ref="bar"/>
</bean>

<bean class="Wallace" parent="base"/>
<bean class="Gromit" parent="base"/>
Wallace
Gromit
现在可以访问common
Foo
属性。您也可以覆盖它,例如在
@PostConstruct


顺便说一句,我真的很喜欢XML中的
parent
特性,它可以让bean保持干燥,但Java方法似乎更干净。

只是遇到了相同的构造。。(一个通用抽象父类,它使用bean-with-context.xml-declaration作为组件扫描注入的潜在实现)

这是我在@Component类中可以做的:

@Autowired
public void setBeanUsedInParent(BeanUsedInParent bean) {
   super.setBeanUsedInParent(bean);
}
// abstract getter in parent Class
public abstract BeanUsedInParent getBeanUsedInParent();
@Autowired
private BeanUsedInParent beanUsedInParent;

@Override
public BeanUsedInParent getBeanUsedInParent() {
   return this.beanUsedInParent;
}

…我最终做了什么(更好,因为它清楚地表明注入在对象上而不是在类上工作)-如果您能够修改父类:

@Autowired
public void setBeanUsedInParent(BeanUsedInParent bean) {
   super.setBeanUsedInParent(bean);
}
// abstract getter in parent Class
public abstract BeanUsedInParent getBeanUsedInParent();
@Autowired
private BeanUsedInParent beanUsedInParent;

@Override
public BeanUsedInParent getBeanUsedInParent() {
   return this.beanUsedInParent;
}
…将实际bean及其注入留给实际实现(@Component类):


你不能只用继承吗?基类中的自动连接将以同样的方式工作。@Tomasz Nurkiewicz我有一个用xml定义的spring父bean(它有一些属性设置为“默认”值)。这是我无法改变的。我补充了一个答案来进一步解释我的想法。你能再详细解释一下为什么它不适合你的需要吗?为什么不能更改XML中的父定义?我恐怕无法从注释中引用父项……如果
base
bean将用XML定义,无论是否创建人工
bean
类,
Wallace
Gromit
都将通过组件扫描创建,那么您的示例将不起作用。