package com.haogrgr.test.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@Component
public class AppContextUtil {
private static Logger logger = LoggerFactory.getLogger(AppContextUtil.class);
private static ApplicationContext context = null;
@EventListener
public void setApplicationContext(ContextRefreshedEvent eve) {
context = eve.getApplicationContext();
}
/**
* 通过beanId和class获取spring中注册的bean
*
* @throws Exception ApplicationContext未注入
*/
public static <T> T getBean(String name, Class<T> clazz) {
if (context != null) {
return context.getBean(name, clazz);
}
else {
logger.error("context 未初始化");
throw new RuntimeException("context 未初始化");
}
}
/**
* 通过beanId获取spring中注册的bean
*
* @throws Exception ApplicationContext未注入
*/
public static Object getBean(String name) {
if (context != null) {
return context.getBean(name);
}
else {
logger.error("context 未初始化");
throw new RuntimeException("context 未初始化");
}
}
/**
* 通过class获取spring中注册的bean
*
* @throws Exception ApplicationContext未注入
*/
public static <T> T getBean(Class<T> clazz) {
if (context != null) {
return context.getBean(clazz);
}
else {
logger.error("context 未初始化");
throw new RuntimeException("context 未初始化");
}
}
/**
* 获取spring的上下文对象
*/
public static ApplicationContext getContext() {
return context;
}
}