【发布时间】:2026-02-11 19:45:02
【问题描述】:
在我基于 spring 的项目中,我有一个带有类的核心模块('core')
@Component
public class Superclass {
// stuff
}
在整个代码中按类型注入的实例如下:
public class AService {
@Autowired
private Superclass superclass;
// service stuff
}
我还有两个依赖于核心模块的模块,其中一个(我们称之为“module1”)扩展了超类:
@component
public class Subclass extends Superclass {
// overridden stuff
}
另一个模块('module2')按原样使用超类。
现在我希望当我编译和运行“child1”时,Subclass 的实例在任何需要 Superclass 的实例的地方使用。于是我写了一个配置类:
@Configuration
public class Module2Configuration {
@Bean
public Superclass superclass(){
return new Subclass();
}
}
当我运行它时,我看到 both Superclass 和 Subclass 被实例化,这绝对是 not 我想要的。如何在 'module1' 中指定 Spring 应该实例化的类型?
【问题讨论】:
标签: java spring inheritance annotations