• SpringBoot:输出当前工程自动装配类和排除类信息


    1.原理

    利用自定义AutoConfigurationImportListener来实现。

    1.1 创建自定义AutoConfigurationImportListener

    public class DefaultAutoConfigurationImportListener implements AutoConfigurationImportListener {
        @Override
        public void onAutoConfigurationImportEvent(AutoConfigurationImportEvent event) {
            // Acquire current ClassLoader
            ClassLoader classLoader = event.getClass().getClassLoader();
            // Candidate autoconfig list
            List<String> candidates =
                    SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class, classLoader);
            // Actual config class list
            List<String> configurations = event.getCandidateConfigurations();
            // Exclude class list
            Set<String> exclusions = event.getExclusions();
            // Print info
            System.out.printf("Autoconfig Class list - Candidate Num: %d, actual Num: %d, exclusion num: %s
    ",
                    candidates.size(), configurations.size(), exclusions.size());
            // Print actual and exclusion class list
            System.out.println("Actual config class list: ");
            event.getCandidateConfigurations().forEach(System.out::println);
            System.out.println("Exclusion class list: ");
            event.getExclusions().forEach(System.out::println);
        }
    }
    

    1.2 新建配置文件resources/META-INF/spring.factories

    # Auto Configuration Import Listeners Self Implement
    org.springframework.boot.autoconfigure.AutoConfigurationImportListener=
    xxx.yyy.DefaultAutoConfigurationImportListener #此处是你本地自定义类的权限类名
    

    1.3 创建引导启动类

    // 此处排除RestTemplate自动配置类,测试后面是否会打印出来
    @EnableAutoConfiguration(exclude = RestTemplateAutoConfiguration.class)
    public class EnableAutoConfigurationBootstrap {
        public static void main(String[] args) {
            new SpringApplicationBuilder(EnableAutoConfigurationBootstrap.class)
                    .web(WebApplicationType.NONE)// non-web app
                    .run(args)
                    .close();// close current context
        }
    }
    

    2.测试结果

    // 结果
    Autoconfig Class list - Candidate Num: 127, actual Num: 25, exclusion num: 1
    Actual config class list:
    ...
    org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration
    org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration
    org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
    org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration
    Exclusion class list:
    org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration
    
  • 相关阅读:
    胡昊—第9次作业--接口及接口回调
    胡昊—第8次作业--继承
    软件工程第三次作业——关于软件质量保障初探
    胡昊—第7次作业--访问权限、对象使用
    胡昊—第6次作业—static关键字、对象
    20194670自动生成四则运算题第一版报告
    《现代软件工程—构建之法》第一章总结
    第四次博客作业-结对项目
    第9次作业--接口及接口回调
    第八次作业--继承
  • 原文地址:https://www.cnblogs.com/HeCG95/p/11808823.html
Copyright © 2020-2023  润新知