1. SpringContextUtil类,这个类可以直接copy
方法1:
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @author lenovo
*
*/
@Component//注意要添加这个注解,否则获取不到数据
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (SpringContextUtil.applicationContext == null) {
SpringContextUtil.applicationContext = applicationContext;
}
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String name){
return getApplicationContext().getBean(name);
}
public static <T>T getBean(Class<T> clazz){
return getApplicationContext().getBean(clazz);
}
public static <T>T getBean(String name, Class<T> clazz){
return getApplicationContext().getBean(name,clazz);
}
}
方法2:
public class SpringContextUtil implements ApplicationContextAware {
private static Logger logger = Logger.getLogger(SpringContextUtil.class);
private static ApplicationContext applicationContext = null;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
{
logger.info("------SpringContextUtil setApplicationContext-------");
SpringContextUtil.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
*//**
* 注意 bean name默认 = 类名(首字母小写)
* 例如: A8sClusterDao = getBean("a8sClusterDao")
* @param name
* @return
* @throws BeansException
*//*
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
*//**
* 根据类名获取到bean
* @param <T>
* @param clazz
* @return
* @throws BeansException
*//*
@SuppressWarnings("unchecked")
public static <T> T getBeanByName(Class<T> clazz) throws BeansException {
try {
char[] cs=clazz.getSimpleName().toCharArray();
cs[0] += 32;//首字母大写到小写
return (T) applicationContext.getBean(String.valueOf(cs));
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static boolean containsBean(String name) {
return applicationContext.containsBean(name);
}
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
return applicationContext.isSingleton(name);
}
2. 在工具类中添加如下
ApplicationContext appCtx = SpringContextUtil.getApplicationContext();
DeflectionTestingService bean = appCtx.getBean(DeflectionTestingService.class);//要调用的service
List<DeflectionTesting> list = bean.getByDataStatus();//调用service层方法获取数据
参考:https://blog.youkuaiyun.com/gwd1154978352/article/details/73480959 感谢!!!
https://blog.youkuaiyun.com/hl_smile90/article/details/76566286 感谢!!!