项目场景:
SpringBoot线程池注入的使用
问题描述:
1、Bean注入为空。
原因分析:
1、在线程中,为了线程安全,springboot是不允许注入的
也就是说:下面这段代码在不是线程的时候是可行的,但是在线程中是不可行的:
@Bean
public AdminInterceptor adminInterceptor(){
return new AdminInterceptor();
}
解决方案:
这个是从网上拿过来的代码工具类,感谢哪位大哥,这个类名随自己意愿修改即可
@Component
public class ContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ContextUtil.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
@SuppressWarnings("unchecked")
public static <T> T getBean(String name) throws BeansException {
return (T) applicationContext.getBean(name);
}
public static <T> T getBean(Class<T> clz) throws BeansException {
return (T) applicationContext.getBean(clz);
}
使用的话:
private TaskService taskService = ContextUtil.getBean(TaskService.class);
这样是支持在线程池中依然可以使用bean注入