Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获得在spring中注册的所有转换器和格式化程序?_Java_Spring_Spring Boot_Spring Web - Fatal编程技术网

Java 如何获得在spring中注册的所有转换器和格式化程序?

Java 如何获得在spring中注册的所有转换器和格式化程序?,java,spring,spring-boot,spring-web,Java,Spring,Spring Boot,Spring Web,我希望在Spring ConverterSPI/Formatter和JsonHttpMessageConverter/XmlHttpMessageConverter中序列化和反序列化的行为保持一致 因此,我尝试将SpringConverterSPI中的所有转换器注册到JsonHttpMessageConverter/XmlHttpMessageConverter提供的全局配置 那么,如何获得在spring中注册的所有转换器和格式化程序呢 我想得到转换器和格式化程序的条件,目标类型是字符串或数字类

我希望在Spring ConverterSPI/Formatter和JsonHttpMessageConverter/XmlHttpMessageConverter中序列化和反序列化的行为保持一致

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

那么,如何获得在spring中注册的所有转换器和格式化程序呢

我想得到转换器和格式化程序的条件,目标类型是字符串或数字类

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

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


这可能吗?

您可以通过以下接口自动连接:

@Autowired
private List<HttpMessageConverter> converters;

@Autowired
private List<Formatter> formatters;
@Autowired
私有列表转换器;
@自动连线
私有列表格式化程序;
我想你想要

差不多吧

@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的返回值进行处理


我不确定你所说的“通过fieldannotations注册”是什么意思,当你查询spring的bean时,这应该无关紧要。

这是我的选择。因为有些转换器可能注册到FormatterRegistry,但没有注册到container。最严重的问题是一些基于FieldAnnotation的格式化程序。我需要获取这部分格式化程序的相关信息。一些基于字段注释的格式化程序,如@NumberFormat。因此仅获取格式化程序的目标类型和源类型是不够的。@caotc我很困惑。无论您如何注册一个bean,它仍然会在spring上下文中结束。例如,org.springframework.format.number.numberformatNotationFormatterFactory基于@NumberFormat创建格式化程序。这也是spring的有用格式化程序。它不仅与类类型有关,还与字段注释有关。