Java Config等效于conversionService/FormattingConversionServiceFactoryBean

我有一个包含另一个实体的实体,如下所示:

public class Order {

    @Id
    private int id;

    @NotNull
    private Date requestDate;

    @NotNull
    @ManyToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="order_type_id")
    private OrderType orderType;
}

public class OrderType {

    @Id
    private int id;

    @NotNull
    private String name;
}

我有一个Spring MVC表单,用户可以在其中提交新订单;他们必须填写的字段是请求日期并选择订单类型(这是一个下拉列表).

我正在使用Spring Validation来验证在尝试将orderType.id转换为OrderType时失败的表单输入.

我编写了一个自定义转换器来将orderType.id转换为OrderType对象:

public class OrderTypeConverter implements ConverteretorderType(orderTypeId);
    }
}

我的问题是我不知道如何使用java配置使用Spring注册此转换器.我找到的XML等价物(从Dropdown value binding in Spring MVC开始)是:

factorybean">
    

搜索网络我似乎找不到相当于java配置 – 有人可以帮助我吗?

UPDATE

我已将OrderTypeConvertor添加WebMvcConfigurerAdapter,如下所示:

public class MvcConfig extends WebMvcConfigurerAdapter{

    ...

    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new OrderTypeConvertor());
    }
}

但是我在OrderTypeConvertor中得到一个空指针异常,因为orderTypeService为null,可能是因为它是自动装配的,我使用了上面的new关键字.一些进一步的帮助将不胜感激.

最佳答案
您需要做的就是:

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter{

    @Autowired
    private OrderTypeConvertor orderTypeConvertor;

    ...

    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(orderTypeConvertor);
    }
}

相关文章

这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...