gpt4 book ai didi

java - Spring 自定义转换器 - 转为 Bean 还是不转为 Bean

转载 作者:行者123 更新时间:2023-11-30 02:27:03 29 4
gpt4 key购买 nike

我正在 Spring 中实现自定义转换器,以便我的 bean 可以从 java.util.Date 转换为 java.time.LocalDateTime。我已经实现了 Converter(通过实现 Spring Converter 接口(interface))

这是@Configuration类中的bean定义

   @Bean
ConversionService conversionService(){
DefaultConversionService service = new DefaultConversionService();
service.addConverter(new DateToLocalDateTimeConverter());
return service;
}

我的问题是:我应该将自定义转换器作为 Java 对象或 Spring Bean 传递给 service.addConverter 吗?一般来说,在这种情况下,是否要 Bean 的指导方针(标准)是什么?

最佳答案

将对象设为 Spring Bean 是有意义的,因为您希望该对象可以从 Spring 功能(注入(inject)、事务、aop 等)中受益。

就您而言,似乎不需要。
由于 conversionService 是一个 Spring bean 单例,将被实例化一次,因此在实例化期间创建 DateToLocalDateTimeConverter 的普通 java 实例似乎没问题:new DateToLocalDateTimeConverter().

现在,如果稍后您想将 DateToLocalDateTimeConverter 实例注入(inject)到其他 Spring bean 中,那么将其转换为 Spring Bean 是有意义的。

<小时/>

有关信息,Spring 已在 Jsr310Converters 类中提供了此实用程序任务(包含在 spring-data-commons 依赖项中):

import static java.time.LocalDateTime.*;

public abstract class Jsr310Converters {
...
public static enum DateToLocalDateTimeConverter implements Converter<Date, LocalDateTime> {

INSTANCE;

@Override
public LocalDateTime convert(Date source) {
return source == null ? null : ofInstant(source.toInstant(), ZoneId.systemDefault());
}
}
...
}

可以直接使用。

关于java - Spring 自定义转换器 - 转为 Bean 还是不转为 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45382162/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com