方法一:
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;
/**
* @author ROCKY
*/
@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;
/**
* @author ROCKY
*/
@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;
/**
* @author ROCKY
*/
@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;
/**
* @author ROCKY
*/
@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> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
}
// 根据NAME,CLASS获取Bean
public static <T> T getBean(String name, Class<T> clazz) {
return getApplicationContext().getBean(name, clazz);
}
}