spring通过ApplicationContext获取Bean

在我们实际开发中,通常通过@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了

 

posted @ 2022-11-03 15:46  小垚java  阅读(941)  评论(0)    收藏  举报