所以我只想打印已加载的所有bean,我理解getBeanDefinitionNames()
方法是很多人建议的。为此我明白你需要一个ApplicationContext
我自动如下所示,但当我在其上调用getBeanDefinitionNames()
时,我在对象上得到一个空指针异常:
package hello;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
public class BeansPrinter
{
@Autowired
private ApplicationContext appContext;
public void printBeans()
{
System.out.println("Number of beans:");
System.out.println(appContext.getBeanDefinitionCount());
String[] names = appContext.getBeanDefinitionNames();
for(String name : names)
{
System.out.println("-----------------");
System.out.println(name);
}
}
}
Application.java
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
BeansPrinter b = new BeansPrinter();
b.printBeans();
}
}
答案 0 :(得分:5)
BeansPrinter不是一个春天的豆子。只有当父母是春天豆时,自动装配才会起作用。
使用@Component
或@Service
@Service("beansPrinter")
public class BeansPrinter
在您的主要课程中,您可以执行以下操作:
ApplicationContext ctx = SpringApplication.run(Application.class, args);
然后ctx.getBean("beansPrinter")
来获取你的bean