从CommandLinerunner获取应用程序上下文

时间:2014-01-24 23:30:49

标签: spring-boot

我们如何从CommandLineRunner类访问ApplicationContext。有没有比使用ApplicationContextAware更好的新方法

2 个答案:

答案 0 :(得分:19)

自动装配可以作为一个字段

@Autowired
private ApplicationContext context;

或方法

@Autowired
public void context(ApplicationContext context) { this.context = context; }

真的与ApplicationContextAware相同。

在任何情况下都是一种气味 - 也许如果你考虑一下你的用例,你会发现一种没有上下文的方法吗?

答案 1 :(得分:0)

  @Bean
  @Autowired
  public CommandLineRunner listAllBeans(ApplicationContext applicationContext) {
      
     return new CommandLineRunner() {
        @Override
        public void run(String... args) throws Exception {
            String[] allBeanNames = applicationContext.getBeanDefinitionNames();
            System.out.println("doing listAllBeans");
            for(String beanName : allBeanNames) {
                System.out.println(beanName);
            }
        }
     };
  }