• Spring Boot


    前言

    Spring Boot启动的时候需要加载许多Bean实现最小化配置,本文将尝试找出Spring启动后加载的所有Bean信息;

    通过ApplicationContext 去获取所有的Bean

    通过CommandLineRunner接口,可以实现在Spring Boot完全启动后执行一些代码逻辑,本文将执行的逻辑是打印所有Bean的信息;

    1. 通过 ApplicationContext.getBeanDefinitionNames() 方法获取所有Bean的名称;
    2. 通过 ApplicationContext.getBean(beanName) 获取Bean的详细信息;

    具体代码实现如下:

    package com.howtodoinjava.app.controller;
     
    import java.util.Arrays;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.support.SpringBootServletInitializer;
    import org.springframework.context.ApplicationContext;
     
    @SpringBootApplication
    public class SpringBootWebApplication extends SpringBootServletInitializer implements CommandLineRunner {
     
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(SpringBootWebApplication.class);
        }
     
        public static void main(String[] args) throws Exception {
            SpringApplication.run(SpringBootWebApplication.class, args);
        }
         
        @Autowired
        private ApplicationContext appContext;
         
        @Override
        public void run(String... args) throws Exception
        {
            String[] beans = appContext.getBeanDefinitionNames();
            Arrays.sort(beans);
            for (String bean : beans)
            {
                System.out.println(bean + " of Type :: " + appContext.getBean(bean).getClass());
            }
        }
    }
    

    运行以上程序,控制台将打印如下信息:

    2017-03-06 13:22:50 - Tomcat started on port(s): 8080 (http)
     
    basicErrorController of Type :: class org.springframework.boot.autoconfigure.web.BasicErrorController
    beanNameHandlerMapping of Type :: class org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
    beanNameViewResolver of Type :: class org.springframework.web.servlet.view.BeanNameViewResolver
    characterEncodingFilter of Type :: class org.springframework.boot.web.filter.OrderedCharacterEncodingFilter
    conventionErrorViewResolver of Type :: class org.springframework.boot.autoconfigure.web.DefaultErrorViewResolver
    defaultServletHandlerMapping of Type :: class org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$EmptyHandlerMapping
    defaultViewResolver of Type :: class org.springframework.web.servlet.view.InternalResourceViewResolver
    dispatcherServlet of Type :: class org.springframework.web.servlet.DispatcherServlet
    dispatcherServletRegistration of Type :: class org.springframework.boot.web.servlet.ServletRegistrationBean
    duplicateServerPropertiesDetector of Type :: class org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration$DuplicateServerPropertiesDetector
    embeddedServletContainerCustomizerBeanPostProcessor of Type :: class org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor
    error of Type :: class org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$SpelView
    errorAttributes of Type :: class org.springframework.boot.autoconfigure.web.DefaultErrorAttributes
    ...
    ...
    ...
    
  • 相关阅读:
    机器学习:评价分类结果(Precision
    机器学习:评价分类结果(F1 Score)
    机器学习:评价分类结果(实现混淆矩阵、精准率、召回率)
    机器学习:评价分类结果(准确率的陷阱、混淆矩阵、精准率、召回率)
    TCP三次握手四次挥手
    LeetCode447. Number of Boomerangs
    Leetcode392. Is Subsequence
    LeetCode406. Queue Reconstruction by Height Add to List
    LeetCode455. Assign Cookies
    LeetCode 34. Search for a Range
  • 原文地址:https://www.cnblogs.com/chenpi/p/9785938.html
Copyright © 2020-2023  润新知