【发布时间】:2017-10-10 04:37:18
【问题描述】:
我正在开发一个 java 核心库,将更改保持在最低限度,它包含一个类 Foo,其中 Foo 由 spring rest 接口使用并自动装配到 rest 接口中。
我必须扩展 Foo 以覆盖它在 Foo.init() 上调用的方法之一,以稍微改变启动。
我的 FooExtend 是从我项目中的另一个类自动装配的,我希望让这两个引用同一个对象,即 FooExtend 对象,但目前我得到一个 Foo 对象和一个 FooExtend。我应该如何解决这个问题?下面的例子
@Component
public class Foo{
@PostConstruct
private void init() {
startStuff();
}
protected void startStuff(){
//Stuff done here
}
}
@Component
public class FooExtend extends Foo{
@PostConstruct
private void init() {
//Nothing is done here
}
@Override
protected void startStuff(){
//Different altered stuff is done here
}
}
【问题讨论】:
-
我不确定我是否理解您的问题。您有两个 bean,一个名为“foo”的 bean 和一个名为“fooExtend”的 bean。在我看来,您应该能够在对 Foo 的引用之上使用 @Qualifier("fooExtend") 或 @Qualifier("foo") 以及 @Autowired 来自动装配一个或另一个。
标签: java spring inheritance spring-boot inject