首页 > 解决方案 > 自定义 Jackson 转换器不受 Spring 管理

问题描述

我正在尝试构建一个具有自动装配依赖项的自定义 Jackson 反序列化转换器。我正在使用 Spring boot 2.1.2 以及 Lovelace-SR3 发布系列中的 Spring Data Rest。重现该问题的最小示例应用程序是:

DemoApplication.java

@SpringBootApplication
public class DemoApplication {
        public static void main(String[] args) {
                SpringApplication.run(DemoApplication.class, args);
        }
}

配置文件

@Configuration
public class Config {
    @Bean("CurrentDate")
    public Date currentDate() {
            return new Date();
    }
}

TestModelConverter.java

public class TestModelConverter extends StdConverter<TestModel, TestModel> {
    @Autowired
    @Qualifier("CurrentDate")
    private Date now;

    @Override
    public TestModel convert(TestModel value) {
            value.setNow(now);
            return value;
    }
}

测试模型.java

@Data
@Entity
@JsonDeserialize(converter = TestModelConverter.class)
public class TestModel {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String text;

    private Date now;
}

TestModelRepo.java

public interface TestModelRepo extends PagingAndSortingRepository<TestModel, Long> { }

在反序列化一个新的Testmodel时,我希望now自动装配以用于反序列化过程。我读到的所有内容都指向默认使用的SpringHandlerInstantiatorTestModelConverter在 spring 上下文中构建,从而允许自动装配依赖项。

情况似乎并非如此。自动装配的依赖项似乎总是null

标签: javaspring-bootjacksonautowiredspring-data-rest

解决方案


推荐阅读