我有一个超类,它需要子类来提供超类运行的接口的实现。
我们使用 Spring 和 DI,所以我们不能只用 new 创建实现。
只有在 Spring 初始化之后,子类才会知道要提供哪个 bean,因此使用超级构造函数将不起作用。
我也不想@PostConstruct
在子类中使用 q setup 方法,因为这需要子类开发人员知道如何设置超类。
我希望超类要求子类提供对实现 bean 的引用,以便它可以设置其成员:
超类使用 UrlBuilder 接口:
public class JsonConnection{
private UrlBuilder urlBuilder;
}
UrlBuilderFacebook
子类通过依赖注入提供实现( )。
@Component
public class FacebookJsonConnection extends JsonConnection {
@Inject
private UrlBuilder urlBuilderFacebook;
}
超类可以是抽象的,也可以是组件的,没关系。重要的是我希望能够创建轻量级的子类,为UrlBuilder
超类和需要的@Inject
地方提供。
@Inject
private JsonConnection facebookJsonConnection;
或者
@Inject
private JsonConnection redmineJsonConnection;
此外,我不希望超类知道哪个子类正在使用它。