} Below is a static util class that can be used to check the list of beans available in the application context
ExampleConfigurationTest.java
package com.mugil.org.utils; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Service; @Service public class SpringUtils implements ApplicationContextAware { private static ApplicationContext ctx; @Override public void setApplicationContext(ApplicationContext appContext) throws BeansException { ctx = appContext; } public static ApplicationContext getApplicationContext() { return ctx; } }
SomeRandomClass.java
class SomeRandomClass { @Autowired SpringUtils springUtils; public void getBeans() { String[] beans = springUtils.getApplicationContext().getBeanDefinitionNames(); Arrays.sort(beans); for (String bean : beans) { System.out.println(bean + " of Type :: " + springUtils.getApplicationContext().getBean(bean).getClass()); } } }
Output
DBConfig of Type :: class com.mugil.org.configs.DBConfig$$EnhancerBySpringCGLIB$$d32ee4ac dbProperties of Type :: class com.mugil.org.configs.DBProperties spring.datasource-com.mugil.org.configs.DBProperties of Type :: class com.mugil.org.configs.DBProperties springUtils of Type :: class com.mugil.org.utils.SpringUtils
In case if you don’t want to create a separate class and wanted to access beans in the context you can implement the ApplicationContextAware interface and specify the for loop in overridden setApplicationContext method.
How to load a single class into ApplicationContext
. . ApplicationContextRunner context = new ApplicationContextRunner().withUserConfiguration(ExampleConfiguration.class); . .