zoukankan      html  css  js  c++  java
  • 转载-通过ApplicationContext 去获取所有的Bean

    Spring Boot - 获取所有的Bean信息
    阅读目录
    前言
    通过ApplicationContext 去获取所有的Bean
    前言
    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
    ...
    ...
    ...
    
    @Author      风一样的码农
    @HomePageUrl http://www.cnblogs.com/chenpi/ 
    @Copyright      转载请注明出处,谢谢~ 
  • 相关阅读:
    SpringMvc与Struts2的对比
    Spring 通知
    Spring 之 AOP
    Spring 之 IOC
    Spring IOC 和 AOP概述
    JSON与JAVA数据的相互转换
    (4)-optXXX方法的使用
    (3)-JSONObject的过滤设置
    (2)-生成JSONObject的方法
    String 类型的相关转换
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/11844112.html
Copyright © 2011-2022 走看看