黑马程序员技术交流社区
标题:
【西安校区】 解决SpringBoot/Spring在异步中无法注入实例问题
[打印本页]
作者:
就业高冷派
时间:
2019-9-18 15:19
标题:
【西安校区】 解决SpringBoot/Spring在异步中无法注入实例问题
在Spring的全家桶中,使用@Autowired关键字无可避免,但是在异步中若是直接注入的话,会出现空指针异常,即注入不成功。那究竟该如何在异步中注入了。
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringUtils implements ApplicationContextAware {
private static ApplicationContext applCon;
/**
* 为空时,设置实例
*/
@Override
public void setApplicationContext(ApplicationContext applCon) throws BeansException {
if (SpringUtils.applCon == null) {
SpringUtils.applCon = applCon;
}
}
/**
* 获取applicationContext的实例applCon
*/
public static ApplicationContext getApplicationContext() {
return applCon;
}
/**
* 通过name,以及Clazz获取指定的Bean
*/
public static <T> T getBean(String name, Class<T> clazz) {
return getApplicationContext().getBean(name, clazz);
}
/**
* 通过clazz获取Bean(推荐使用这种)
*/
public static <T> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
}
/**
* 通过name获取 Bean
*/
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
}
如上面代码,通过实现Spring 的ApplicationContextAware接口,重写 setApplicationContext方法。且可以直接当做工具方法使用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2