我创建了一个接口(kotlin(和一堆子类。我添加了@Component
注释,以便 Spring 找到并将它们添加到 ApplicationContext 中。最后,我想将它们自动连接到另一个 bean 的构造函数中,但它不起作用:
interface EventTransformer<T> where T: Event { ..
@Component
class LoginEventTransformer: EventTransformer<Login> {
@Component
class FieldValueListRowMapper(transformers: List<EventTransformer<Event>>) { // autowires empty list
如果我重写我的接口并删除泛型类型参数,一切正常(见下文(。有什么方法可以让上面的通用设计工作吗?我更喜欢强打字。
interface EventTransformer { ..
@Component
class LoginEventTransformer: EventTransformer { ..
@Component
class FieldValueListRowMapper(transformers: List<EventTransformer>) { // works
如果 Login 扩展了 Event,请尝试以下操作:
@Component
class FieldValueListRowMapper(transformers: List<EventTransformer<? extends Event>>)