从外部库使用NewInstance创建的Autowire Java Bean
我正在做一个Spring引导项目,并使用OpenCSV库将一些CSV解析为POJO,以持久化到db OpenCSV使用注释从外部库使用NewInstance创建的Autowire Java Bean,java,spring,spring-boot,spring-mvc,opencsv,Java,Spring,Spring Boot,Spring Mvc,Opencsv,我正在做一个Spring引导项目,并使用OpenCSV库将一些CSV解析为POJO,以持久化到db OpenCSV使用注释@CsvCustomBindByName将CSV字段映射到Java对象 converter=DepartmentConverter.class是一个自定义转换器,通过以下方式实例化: Class<? extends AbstractBeanField<T,K>>.newInstance() 在我的DepartmentConverter中,我需要使用
@CsvCustomBindByName
将CSV字段映射到Java对象
converter=DepartmentConverter.class
是一个自定义转换器,通过以下方式实例化:
Class<? extends AbstractBeanField<T,K>>.newInstance()
在我的DepartmentConverter中,我需要使用SpringJParepository来检索一些数据。无法自动连接DepartmentRepository
@Component
public class DepartmentConverter extends AbstractBeanField<Department, String> {
@Autowired
private DepartmentRepository departmentRepository;
public DepartmentConverter() {
}
@Override protected Object convert(String val) throws CsvConstraintViolationException, ResourceNotFoundException {
//use departmentRepository
...
}
}
@组件
公共类DepartmentConverter扩展AbstractBeanField{
@自动连线
私人部门储存库部门储存库;
公共部门转换器(){
}
@重写受保护对象转换(字符串val)引发CsvConstraintViolationException、ResourceNotFoundException{
//使用部门存储库
...
}
}
您所指的newInstance()
调用位于HeaderColumnNameMappingStrategy
类中,该类调用InstanceCustomConverter()
方法来执行newInstance()
调用
创建子类并重写该方法:
@覆盖
受保护的BeanField实例化eCustomConverter(类否则您如何获得该实例?也许您可以创建@Bean方法将其添加到上下文中?就是这样!非常感谢!)
@Component
public class DepartmentConverter extends AbstractBeanField<Department, String> {
@Autowired
private DepartmentRepository departmentRepository;
public DepartmentConverter() {
}
@Override protected Object convert(String val) throws CsvConstraintViolationException, ResourceNotFoundException {
//use departmentRepository
...
}
}