【发布时间】:2020-10-29 14:59:47
【问题描述】:
如何自动装配通用 bean?示例
@Configuration
@RequiredArgsConstructor
public class BatchConfig {
final MessageSource messageSource;
@Bean
public <T> BeanValidatingItemProcessor<T> itemBeanValidator() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource(messageSource);
validator.afterPropertiesSet();
BeanValidatingItemProcessor<T> beanValidatingItemProcessor = new BeanValidatingItemProcessor<>(validator);
beanValidatingItemProcessor.setFilter(false);
return beanValidatingItemProcessor;
}
@Bean
protected Step homeCareDetailStep(BeanValidatingItemProcessor<HomeCareDetailDTO> itemBeanValidator){
//do something
}
@Bean
protected Step homeCareProviderStep(BeanValidatingItemProcessor<HomeCareProviderDTO> itemBeanValidator){
//do something
}
}
我在 IDE 中收到以下错误“无法自动装配。找不到 BeanValidatingItemProcessor 类型的 bean”
我的问题的另一个潜在解决方案可能是使用服务,但不确定我可能面临哪些缺点。
@Service
@RequiredArgsConstructor
public class ItemBeanValidatorImpl<T> implements ItemBeanValidator<T> {
final MessageSource messageSource;
public <T> BeanValidatingItemProcessor<T> itemBeanValidator() {
LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
validator.setValidationMessageSource(messageSource);
validator.afterPropertiesSet();
BeanValidatingItemProcessor<T> beanValidatingItemProcessor = new BeanValidatingItemProcessor<>(validator);
beanValidatingItemProcessor.setFilter(false);
return beanValidatingItemProcessor;
}
}
public interface ItemBeanValidator<T> {
<T> BeanValidatingItemProcessor<T> itemBeanValidator();
}
【问题讨论】:
标签: java spring spring-boot