2012-03-07 3 views

ответ

56

Да, получить Ахольд ApplicationContext и вызвать .getBeanDefinitionNames()

Вы можете получить контекст:

  • реализации ApplicationContextAware
  • впрыскиванием с @Inject/@Autowired (после 2,5)
  • использования WebApplicationContextUtils.getRequiredWebApplicationContext(..)

Связанный: Вы также можете обнаружить регистрацию каждого бина, зарегистрировав bean-компонент BeanPostprocessor. Он будет уведомлен для каждого компонента.

+0

Причина реализации ' Интерфейс ApplicationContextAware' состоит в том, что Spring Framework дает возможность * получить доступ к контексту приложения , Вы должны поместить его в класс '@ Configuration' для предполагаемого контекста приложения. – smwikipedia

+0

Связанная ссылка: http://stackoverflow.com/questions/14829258/how-can-i-get-a-list-of-instantiated-beans-from-spring – smwikipedia

4

Вы могли бы попробовать вызвать

org.springframework.beans.factory.ListableBeanFactory.getBeansOfType(Object.class) 

Или включить ведение журнала отладки для org.springframework.

42
public class PrintBeans { 
    @Autowired 
    ApplicationContext applicationContext; 

    public void printBeans() { 
     System.out.println(Arrays.asList(applicationContext.getBeanDefinitionNames())); 
    } 
} 
15

печати все имена боб и его классы:

package com.javahash.spring.controller; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.ApplicationContext; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestParam; 

@Controller 
public class HelloWorldController { 

    @Autowired 
    private ApplicationContext applicationContext; 

    @RequestMapping("/hello") 
    public String hello(@RequestParam(value="key", required=false, defaultValue="World") String name, Model model) { 

     String[] beanNames = applicationContext.getBeanDefinitionNames(); 

     for (String beanName : beanNames) { 

      System.out.println(beanName + " : " + applicationContext.getBean(beanName).getClass().toString()); 
     } 

     model.addAttribute("name", name); 

     return "helloworld"; 
    } 
} 
7

С весны Ботинок и привод стартера

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-actuator</artifactId> 
</dependency> 

вы можете проверить конечную точку /beans

+0

Спасибо, Вьетнам! –

Смежные вопросы