我正在使用 Spring 4。 我有以下 Java 配置片段:
@Bean
public Service<FooType> serviceBean() {
return new ServiceImpl<FooType>(FooType.class);
}
以及以下 Spring Bean:
public class ServiceImpl<T> implements Service {
private final Class<T> clazz;
public ValidateOrderServiceImpl(final Class<T> clazz)
this.clazz = clazz;
}
}
我宁愿不必重复类型参数,但如果我不作为构造函数传入,则 T 为 null,即以下内容不起作用。这是预期的吗。我看过一些相关的帖子,其中讨论了删除 - 以及如何使用类型参数来解析要使用的正确 bean - 但还没有看到我的问题的明确答案...
// Java Config Snippet (desired)
@Bean
public Service<FooType> serviceBean() {
return new ServiceImpl<FooType>();
}
//Spring Bean(所需)
public class ServiceImpl<T> implements Service {
// T populated..
private final Class<T> clazz;
}
谢谢
最佳答案
您最初拥有的很好,并且(几乎)是获取相应类型参数的 Class 对象的唯一方法。
您可以在此处摆脱显式类型参数
@Bean
public Service<FooType> serviceBean() {
return new ServiceImpl<>(FooType.class);
// ^^
}
关于java - 通用 Spring Bean - 复制类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28072298/