首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在maven surefire插件中派生线程时,Spring @Autowired返回null

的原因是因为派生的线程不受Spring容器的管理。在Spring中,使用@Autowired注解进行依赖注入时,Spring会在容器启动时扫描并创建被注解的Bean,并将其注入到需要的地方。但是在派生线程中,Spring容器无法感知到线程的创建和执行过程,因此无法进行依赖注入。

为了解决这个问题,可以使用Spring提供的ThreadLocal来传递依赖。ThreadLocal是一个线程局部变量,可以在每个线程中存储数据。可以在主线程中将需要的依赖注入到ThreadLocal中,然后在派生的线程中从ThreadLocal中获取依赖。

具体操作如下:

  1. 在主线程中,将需要注入的依赖存储到ThreadLocal中:
代码语言:java
复制
@Autowired
private SomeDependency someDependency;

ThreadLocal<SomeDependency> threadLocal = new ThreadLocal<>();
threadLocal.set(someDependency);
  1. 在派生的线程中,从ThreadLocal中获取依赖:
代码语言:java
复制
SomeDependency someDependency = threadLocal.get();

这样就可以在派生线程中获取到需要的依赖对象了。

需要注意的是,使用ThreadLocal传递依赖时,需要确保主线程中已经完成了依赖注入,否则ThreadLocal中的值可能为空。另外,使用ThreadLocal传递依赖可能会增加代码的复杂性和维护成本,需要谨慎使用。

推荐的腾讯云相关产品:腾讯云容器服务(Tencent Kubernetes Engine,TKE)

腾讯云容器服务(TKE)是腾讯云提供的一种高度可扩展的容器管理服务,支持使用Docker进行应用打包和部署。TKE提供了强大的容器编排和管理能力,可以帮助用户快速构建、部署和管理容器化应用。

产品介绍链接地址:https://cloud.tencent.com/product/tke

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Spring Cloud 2.x之Activiti整合规则引擎Drools

    日常生活是由规则驱动的。红灯停绿灯行,这是我们的交通规则;我们站着往上跳,最终还是要落下来,这是地球的引力规则。规则在生活中无处不在。软件开发中我们也需要规则,满足什么规则应该进入什么分支。如果做过风控系统,就知道风控系统里存在非常多的规则(比如:age < 16 || age > 50 -> REJECT )。最便捷的实现就是用 if-else 来写,但是随着规则的增加以及需求的变动,代码将变得越来越难阅读和理解,如果再去修改这些代码,然后测试不够充分的话,将产生严重的生产事故。这时候就要引入Drools等规则引擎了。Drools就是为了解决业务代码和业务规则分离的引擎。

    01
    领券