当前位置: 首页 > 面试题库 >

Spring ConversionService添加转换器

司马钱明
2023-03-14
问题内容

我搜索了以下问题,但找不到答案。

我想通过编写实现 org.springframework.core.convert.converter.Converter的
自定义转换器来使用spring的转换服务。

然后我添加我的自定义转换器,如下所示:

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean id="StringToLoggerConverter" class="com.citi.spring.converter.LoggerConverter" />
       </list>
   </property>
</bean>

执行上述操作时,我的应用程序初始化失败,因为我要覆盖bean conversionService并仅注册我的自定义转换器。

我如何才能不覆盖conversionService而仅将自定义转换器添加到转换器列表中,同时保留现有转换器?

提前致谢。


问题答案:

在尝试不同的方法甚至在遵循Spring源代码的过程中,我遇到了一件有趣的事情。

我发现使用conversionService而不用我的自定义转换器覆盖现有转换器的唯一方法是扩展或重新实现conversionService,该转换服务调用超类的afterPropertiesSet()方法来注册默认转换器,然后添加自定义转换器。

但是,即使我使用这种方式,在运行时我也遇到了一个例外,即找不到针对我的特定类型的转换器(例如,从String到Logger)。

那激发了我的兴趣,我跟随spring源代码找出原因,然后我意识到spring试图找到在PropertyEditor中注册的自定义转换器。我不确定为什么会这样。我必须在这里添加我的应用程序未使用spring
mvc的功能,并且转换服务可能需要以某种方式进行注册,而我没有这样做。

最后,我通过使用属性编辑器注册自定义转换器解决了该问题。该文档可以视为参考:

http://static.springsource.org/spring/docs/current/spring-framework-
reference/html/validation.html

我很想知道为什么Spring不能在conversionService的注册表中找到我的注册自定义转换器(或者至少为什么Spring不在该注册表中找到自定义转换器)。我是否缺少任何配置



 类似资料:
  • 我的程序服务提供了一些返回

  • 我试图在PHP代码中添加一个新行,但都没有用。我试过\r\n甚至试过使用HTML中断,但它就是不起作用。这些是我试过的: 在其他情况下,我试过: 我真的不太懂编码,我会非常感谢你的帮助。 问题已经在其中一条评论中得到了回答!

  • {“ID”:123456,“IP”:“192.168.1.1”,“T”:-12.9,“T”:-23.8,“变量”:[“用户名”:“用户1”,“有效”:0,“温度1”:-12.97,“温度2”:23.87]} 然后能够访问一个键值对,比如variables.username。 我尝试过使用JoltTransformJSON,但不知道如何正确地编写规范,如果它能做到!!我编写了以下jolt规范: [{

  • 我正在尝试使用JOLT进行JSON转换,我想我已经很接近了,但是我不能做的是为每个当前没有出现的字段添加一个新字段。 我已经阅读了很多教程,下面的代码是我希望能够工作的。然而,它似乎没有添加到新的“名称”字段中。 这是我的震撼: 这是输出: 我希望它是这样的: 谁能告诉我哪里出错了?显然,默认值用于添加新项目,但它似乎没有执行任何操作。

  • 嗨,伙计们,我在做零碎交易时有点困惑。以下是细节。 我有四个片段,A,B,C,D。 我所做的是: 第一个A(替换) A-- B... C-- 现在,当我在片段D中并按下back按钮时,当我按下hardware back键时,导航将跟随这里。 D-- 即使我将片段C添加到后堆栈中,我也不知道它已经到哪里去了 请帮我做这个。 这里是我整个演示项目的链接

  • 有人能帮我一下吗? 我需要将Java8LocalDate转换为JSON,反之亦然,在我的REST应用程序中,我将调用REST API的MVC应用程序。由于默认JacksonJAXbJSONProvider不解析LOcalDate,所以我编写了如下所示的自定义映射器,并在pom.xml中添加了依赖项 } 这是在Java 8 LocalDate Jackson格式中提出的 我需要将它传递给spring