通用 Spring Bean - 复制类型参数
Generic Spring Bean - duplicating type param
我正在使用 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);
// ^^
}
我正在使用 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);
// ^^
}