在一些静态类中需要使用到ioc中的bean可以使用该方法根据对象名称获取到bean对象。
原理就是使用ApplicationContextAware注入 ApplicationContext然后使用getBean获取bean。
@Component
public class SpringIocUtil implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
/**
* 从ioc容器中中拿指定名称和类型的bean
*
* @param beanName bean的名称
* @param clazz bean的类型
* @param <T> 泛型标志
* @return bean
*/
public static <T> T getBeanByNameNameClazz(String beanName, Class<? extends T> clazz) {
return context.getBean(beanName, clazz);
}
}
评论区