准备条件
准备一个工具类,用于在非Spring管理的Bean中获取Spring容器中的Bean
java@Component public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicationContext = null; @Override 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); } }
main方法注入
main方法是static,static方法内不能使用非static的变量或者方法,所以道理很简单,要想使用,先启动springboot应用,应用启动完毕后,所有的Bean肯定已经实例化完毕了,使用工具类从Spring容器里捞就行了
javapublic static void main(String[] args) { SpringApplication.run(ApiApplication.class, args); ApplicationContext applicationContext = SpringContextUtil.getApplicationContext(); // 以获取RedisUtil的实例为例 RedisUtil redisUtil = applicationContext.getBean(RedisUtil.class); String obj = redisUtil.getCacheObject("test"); }