在 Spring Boot 入门项目中,我创建了一个 AttributeConverter,并使用 autoApply=true @Converter 注释应用它。我的问题是使用启动器的项目仍然需要为字段指定@Convert。
我创建了 AttributeConverter,并使用 @Converter(autoApply = true) 应用它:
@Converter(autoApply = true)
public class YearWeekDayAttributeConverter implements AttributeConverter<YearWeekDay, String> {
public String convertToDatabaseColumn(YearWeekDay yearWeekDay) {
return yearWeekDay.toString();
}
@Override
public YearWeekDay convertToEntityAttribute(String jsonString) {
return YearWeekDay.parse(jsonString);
}
}
然后我将其添加到自动配置中(org.springframework.boot.autoconfigure.AutoConfiguration.imports):
com.eg.nextgen.microservice.converters.YearWeekDayAttributeConverter
当我在另一个项目中使用启动器时,问题就出现了。我可以为实体字段指定@Convert,并且它工作得很好。但是,如果我不指定 @Convert,则该值不会转换 - 尽管我添加了 autoApply=true。
关于为什么自动应用不起作用有什么想法吗?如果我将转换器放在正在使用的项目中,而不是放在启动项目中,它也将起作用(无需指定@Convert)。
转换器类必须在您扫描的包下
SpringBoot
@EntityScan(basePackages = {"com.example.entities", "com.example.converters"})
其他框架
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setJpaVendorAdapter(jpaVendorAdapter);
// Converter ve entity paketlerinizi burada belirtiyorsunuz
em.setPackagesToScan("com.example.entities", "com.example.converters");