package com.chanshiyu.moemall.service.utils;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;/*** @author SHIYU* @date 2019/11/6 15:13* @description 提供手动获取被 spring 管理的 bean 对象*/public class SpringUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {if (SpringUtil.applicationContext == null) {SpringUtil.applicationContext = applicationContext;}}/*** 获取 applicationContext*/private static ApplicationContext getApplicationContext() {return applicationContext;}/*** 通过 name 获取 Bean.*/public static Object getBean(String name) {return getApplicationContext().getBean(name);}/*** 通过 class 获取 Bean.*/public static <T> T getBean(Class<T> clazz) {return getApplicationContext().getBean(clazz);}/*** 通过 name 以及 Clazz 返回指定的 Bean*/public static <T> T getBean(String name, Class<T> clazz) {return getApplicationContext().getBean(name, clazz);}}
调用方法:
@SpringBootApplicationpublic class Application {@Beanpublic SpringUtil getSpringUtil() {return new SpringUtil();}public static void main(String[] args) {SpringApplication.run(Application.class, args);ProxyServiceImpl proxyService = SpringUtil.getBean(ProxyServiceImpl.class);}}