在我们实际开发中,通常通过@Autowired和@Resource来进行bean的获取,其中Autowired默认ByType,Resource默认ByName获取,但是我们如果需要动态的获取bean时,就需要直接借助ApplicationContext的getBean方法进行获取
在工具类中定义一个工具类实现ApplicationContextAware接口
重写里面
@Service
public class ContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ContextUtil.applicationContext = applicationContext;
}
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
public static Object getBean(String name) {
return applicationContext.getBean(name);
}
public static <T> T getBean(String name, Class<T> clazz) {
return applicationContext.getBean(name, clazz);
}
}
我这次在写瑞吉外卖时候 不想把分页代码写在Controller层 想写在Service层
但是因为别的Service层已经调用了这个service层代码 所以两者互相调用的话直接死循环代码直接挂了
请教老师之后 写个工具类实现applicationContextAware接口 通过getBean方法直接动态获取Bean就ok了
标签:applicationContext,ApplicationContext,spring,getBean,clazz,获取,Bean,static From: https://www.cnblogs.com/jiayuyao/p/16854719.html