2012-03-07 20 views

Respuesta

56

Sí, ponerme en contacto con ApplicationContext y llamar .getBeanDefinitionNames()

, usted puede obtener el contexto de:

  • implementar ApplicationContextAware
  • inyectándole @Inject/@Autowired (después de 2,5)
  • uso WebApplicationContextUtils.getRequiredWebApplicationContext(..)

Relacionados: También puede detectar el registro de cada grano registrando un BeanPostprocessor bean. Será notificado por cada frijol.

+0

La razón para poner en práctica ' La interfaz de ApplicationContextAware' se debe a que Spring Framework le da * la oportunidad * de acceder al contexto de la aplicación . Debe colocarlo en la clase '@ Configuration' para el contexto de aplicación previsto. – smwikipedia

+0

Un enlace relacionado: http://stackoverflow.com/questions/14829258/how-can-i-get-a-list-of-instantiated-beans-from-spring – smwikipedia

4

Se podría intentar llamar

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

O activar el registro de depuración para org.springframework.

42
public class PrintBeans { 
    @Autowired 
    ApplicationContext applicationContext; 

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

Imprimir todos los nombres de soja y sus clases:

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

Con la primavera de arranque y el motor de arranque del actuador

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

puede comprobar el punto final /beans

+0

¡Gracias Vietnam! –

Cuestiones relacionadas