我希望Spring ConverterSPI/Formatter和JsonHttpMessageConverter/XmlHttpMessageConverter中的序列化和反序列化行为保持一致。
因此,我尝试将Spring ConverterSPI中的所有转换器注册到JsonHttpMessageConverter/XmlHttpMessageConverter提供的全局配置中。
那么,如何让所有的转换器和格式化程序在春季注册呢?
我想按目标类型获取转换器和格式化程序的条件是String或Number类。
最严重的问题是一些基于字段注释的格式化程序,如@NumberFormat。例如,org.springframework.format.number.NumberFormatAnnotationFormatterFactory基于@NumberFormat创建格式化程序。
这也是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时,这并不重要。