2.2.4版本Spring Boot参数转换器自动注册机制的一个源码疑问

  • Spring Boot在初始化的过程中会把Converter,Formatter和GenericConverter类型的Bean注册到ConverterService对象中。以前的代码是在WebMvcAutoConfigurationAdapter中,但是现在已经转换到ApplicationConversionService中,而且具体的逻辑已经把Formatter类型的Bean给排除了,但是服务类还在获取他,有点绕
  • 我的问题是,我是找错源码了,还是已经改掉了
 public static void addBeans(FormatterRegistry registry, ListableBeanFactory beanFactory) {
        Set<Object> beans = new LinkedHashSet();
        beans.addAll(beanFactory.getBeansOfType(GenericConverter.class).values());
        beans.addAll(beanFactory.getBeansOfType(Converter.class).values());
        beans.addAll(beanFactory.getBeansOfType(Printer.class).values());
        beans.addAll(beanFactory.getBeansOfType(Parser.class).values());
        Iterator var3 = beans.iterator();

        while(var3.hasNext()) {
            Object bean = var3.next();
            if (bean instanceof GenericConverter) {
                registry.addConverter((GenericConverter)bean);
            } else if (bean instanceof Converter) {
                registry.addConverter((Converter)bean);
            } else if (bean instanceof Formatter) {
                registry.addFormatter((Formatter)bean);
            } else if (bean instanceof Printer) {
                registry.addPrinter((Printer)bean);
            } else if (bean instanceof Parser) {
                registry.addParser((Parser)bean);
            }
        }

发布了180 篇原创文章 · 获赞 114 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43404791/article/details/105661831