2012-03-07 29 views

Trả lời

56

Vâng, có được Ahold của ApplicationContext và gọi .getBeanDefinitionNames()

Bạn có thể lấy bối cảnh theo:

  • thực hiện ApplicationContextAware
  • tiêm nó với @Inject/@Autowired (sau 2.5)
  • sử dụng WebApplicationContextUtils.getRequiredWebApplicationContext(..)

Related: Bạn cũng có thể phát hiện đăng ký của mỗi bean bằng cách đăng ký một bean BeanPostprocessor. Nó sẽ được thông báo cho mỗi đậu.

+0

Lý do để thực hiện ' Giao diện ApplicationContextAware' là vì khung công tác Spring cung cấp cho nó cơ hội * để truy cập bối cảnh ứng dụng . Bạn nên đặt nó trong lớp '@ Configuration' cho ngữ cảnh ứng dụng dự định. – smwikipedia

+0

Liên kết có liên quan: http://stackoverflow.com/questions/14829258/how-can-i-get-a-list-of-instantiated-beans-from-spring – smwikipedia

4

Bạn có thể thử gọi

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

Hoặc bật debug logging cho org.springframework.

42
public class PrintBeans { 
    @Autowired 
    ApplicationContext applicationContext; 

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

In tất cả các tên đậu và các lớp học của nó:

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

Với mùa xuân Boot và khởi động thiết bị truyền động

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

bạn có thể kiểm tra các thiết bị đầu cuối /beans

+0

Cảm ơn Việt Nam !! –

Các vấn đề liên quan