繁体   English   中英

如何在Spring Boot中为通用类提供类类型?

[英]How to provide the classtype for generic classes in spring-boot?

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

这种行为应类似于spring-boot

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

无论如何,这迫使用户显式实现这些类中的每一个并提供类类型。

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

框架:

@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会自动使用提供的类类型实例化?

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

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

     private Class<T> mappedClass;

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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM