} 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); . .