Подтвердить что ты не робот

Распечатайте все загруженные Spring beans

Есть ли способ распечатать все spring beans, которые загружаются при запуске? Я использую spring 2.0.

4b9b3361

Ответ 1

Да, получите ApplicationContext и вызовите .getBeanDefinitionNames()

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

  • реализация ApplicationContextAware
  • вводя его @Inject/@Autowired (после 2.5)
  • использовать WebApplicationContextUtils.getRequiredWebApplicationContext(..)

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

Ответ 2

public class PrintBeans {
    @Autowired
    ApplicationContext applicationContext;

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

Ответ 3

Распечатайте все имена < bean и его классы:

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";
    }
}

Ответ 4

С помощью Spring Загрузите и стартер привода

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

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

Ответ 5

Вы можете попробовать позвонить

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

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