zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    利用CWinThread实现跨线程父子MFC窗口
    GetForgroundWindow函数的不确定性——BUG笔记
    DLL动态链接库的创建
    php正则讲解 及与 js的正则比较
    cookie和session的讲解
    两种排序的方法 冒泡法 插入法 封装版
    php中获取当前时间
    文件下载及header方法介绍
    文件上传
    二分法封装版
  • 原文地址:https://www.cnblogs.com/HeCG95/p/11808823.html
Copyright © 2011-2022 走看看