自动配置时,AttributeConverter 不会自动应用

问题描述 投票:0回答:1

在 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)。

spring-boot type-conversion converters spring-autoconfiguration
1个回答
0
投票

转换器类必须在您扫描的包下

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");
© www.soinside.com 2019 - 2024. All rights reserved.