如何在spring-boot中为泛型类提供classtype?

时间:2014-09-09 13:28:59

标签: java spring generics spring-boot

我想创建一个小框架,并希望提供一些应该加载的默认类,用户不提供实现类。

此行为应与spring-boot类似。

问题:我想创建的许多类都应该是通用的,并且只需要用户定义classtype。

无论如何,这会强制用户显式实现这些类中的每一个并提供classtype。

我有什么办法可以解决这个问题吗?用户如何提供应该在泛型上使用的classtype,而不必显式实现泛型类?这可能吗?

框架:

@Configuration
public class AppConfig {

    @Bean
    @ConditionalOnMissingBean
    public BaseValidator<T extends MyReq> defaultValidator() {
        return new BaseValidator<T extends MyReq>();
    }
}

自定义应用:

@Configuration
@EnableAutoConfiguration
@Import(AppConfig.class)
public CustomConfig {

}

//我想防止用户必须按如下方式实现每个泛型类:

@Component
public class MyValidator extends BaseValidator<CustomReq> {

}

用户是否可能只提供CustomReq.class,并且BaseValidator会自动与提供的classtype相关联?

1 个答案:

答案 0 :(得分:1)

您可以使用Class<T extends MyReq>构造函数arg克服它,如下所示:

public class BeanPropertyRowMapper<T> implements RowMapper<T> {

     private Class<T> mappedClass;

     public BeanPropertyRowMapper(Class<T> mappedClass) {
        initialize(mappedClass);
    }

}