栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

SpringBoot - 如何查看Spring上下文中加载的Bean

SpringBoot - 如何查看Spring上下文中加载的Bean

方法一:
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import java.util.Arrays;



@SpringBootApplication
@Slf4j
public class DroolsxApplication implements CommandLineRunner {
    public static void main(String[] args) {
        SpringApplication.run(DroolsxApplication.class, args);
        log.info("规则引擎测试服务启动成功, 正在监听中...");
    }

    @Autowired
    private ApplicationContext context;

    @Override
    public void run(String... args) throws Exception {

        String[] beans = context.getBeanDefinitionNames();
        Arrays.sort(beans);
        for (String bean : beans) {
            log.info(bean);
        }
    }
}

方法二:
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import java.util.Arrays;



@SpringBootApplication
@Slf4j
public class DroolsxApplication {
    public static void main(String[] args) {
        SpringApplication.run(DroolsxApplication.class, args);
        log.info("规则引擎测试服务启动成功, 正在监听中...");
    }

    @Bean
    public CommandLineRunner run(ApplicationContext context) {
        return args -> {
            String[] beans = context.getBeanDefinitionNames();
            Arrays.stream(beans).sorted().forEach(System.out::println);
        };
    }
}

方法三:
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import java.util.Arrays;


@SpringBootApplication
@Slf4j
public class DroolsxApplication{
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(DroolsxApplication.class, args);
        String[] beans = context.getBeanDefinitionNames();
        Arrays.stream(beans).sorted().forEach(System.out::println);
        log.info("规则引擎测试服务启动成功, 正在监听中...");
    }
}

方法四:

自定义工具类 SpringUtils,实现 ApplicationContextAware接口。Spring容器会检测容器中的所有Bean,如果发现某个Bean实现了ApplicationContextAware接口,Spring容器会在创建该Bean之后,自动调用该Bean的setApplicationContext(ApplicationContext applicationContext)方法,并将容器本身作为参数传给该方法。
调用方法:String beanNames[] = SpringUtils.getApplicationContext().getBeanDefinitionNames();

package com.hadoopx.drools.util;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;



@Component
public class SpringUtils implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext)
            throws BeansException {
        if (SpringUtils.applicationContext == null) {
            SpringUtils.applicationContext = applicationContext;
        }
    }

    // 获取ApplicationContext
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    // 根据NAME获取Bean
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    // 根据CLASS获取Bean
    public static  T getBean(Class clazz) {
        return getApplicationContext().getBean(clazz);
    }

    // 根据NAME,CLASS获取Bean
    public static  T getBean(String name, Class clazz) {
        return getApplicationContext().getBean(name, clazz);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/689974.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号