繁体   English   中英

如何获得春季注册的所有转换器和格式化器?

[英]How to get all converters and formatters that register in spring?

我想让Spring ConverterSPI / Formatter和JsonHttpMessageConverter / XmlHttpMessageConverter中的序列化和反序列化行为保持一致。

因此,我尝试将Spring ConverterSPI中的所有转换器注册为JsonHttpMessageConverter / XmlHttpMessageConverter提供的全局配置。

那么如何获得所有在春季注册的转换器和格式化器呢?

我想按目标类型获取String和Number类的转换器和格式化程序条件。

最严重的问题是某些基于字段注释的格式化程序,例如@NumberFormat。 例如,基于@NumberFormat的org.springframework.format.number.NumberFormatAnnotationFormatterFactory创建Formatter。

这也是spring有用的格式化程序,它不仅与类类型有关,而且与字段注释有关。 我需要获得有关格式化程序这部分的相关信息。

这可能吗?

您可以通过以下接口将它们自动接线:

@Autowired
private List<HttpMessageConverter> converters;

@Autowired
private List<Formatter> formatters;

我认为您想要https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/ListableBeanFactory.html#getBeansOfType-java.lang.Class-

像这样。

@SpringBootApplication
public class Application {
    private static ApplicationContext applicationContext;
 
    public static void main(String[] args) {
        applicationContext = SpringApplication.run(Application.class, args);
        applicationContext.getBeansOfType(XmlHttpMessageConverter.class);
        applicationContext.getBeansOfType(Formatter.class);
    }
}

显然,您需要对getBeansOfType的返回值进行处理。

我不确定您所说的“按字段注释注册”是什么意思,当您在spring中查询它具有什么bean时,这无关紧要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM