Spring boot loads lots of beans internally to run your application with minimal configuration. In this example, we will learn to find out all those spring boot loaded beans and their class type information.
Using ApplicationContext to get all loaded beans
To execute a method automatically, when application is fully loaded, I am using CommandLineRunner interface. CommandLineRunner is used to indicate that a bean should run when it is contained within a Spring Application.
1) Use ApplicationContext.getBeanDefinitionNames() to find the name of all loaded beans
2) Use ApplicationContext.getBean(beanName) to get bean including its runtime type information.
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;@SpringBootApplicationpublic 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()); } }} |
Running above application will print bean names and type information in console like below:
2017-03-06 13:22:50 - Tomcat started on port(s): 8080 (http)basicErrorController of Type :: class org.springframework.boot.autoconfigure.web.BasicErrorControllerbeanNameHandlerMapping of Type :: class org.springframework.web.servlet.handler.BeanNameUrlHandlerMappingbeanNameViewResolver of Type :: class org.springframework.web.servlet.view.BeanNameViewResolvercharacterEncodingFilter of Type :: class org.springframework.boot.web.filter.OrderedCharacterEncodingFilterconventionErrorViewResolver of Type :: class org.springframework.boot.autoconfigure.web.DefaultErrorViewResolverdefaultServletHandlerMapping of Type :: class org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$EmptyHandlerMappingdefaultViewResolver of Type :: class org.springframework.web.servlet.view.InternalResourceViewResolverdispatcherServlet of Type :: class org.springframework.web.servlet.DispatcherServletdispatcherServletRegistration of Type :: class org.springframework.boot.web.servlet.ServletRegistrationBeanduplicateServerPropertiesDetector of Type :: class org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration$DuplicateServerPropertiesDetectorembeddedServletContainerCustomizerBeanPostProcessor of Type :: class org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessorerror of Type :: class org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$SpelViewerrorAttributes of Type :: class org.springframework.boot.autoconfigure.web.DefaultErrorAttributes......... |
I have truncated the output. You can verify the whole list yourself.
No comments:
Post a Comment
Note: only a member of this blog may post a comment.