java Spring,自动装配的singleton组件和性能

时间:2016-02-20 16:14:39

标签: java spring concurrency singleton autowired

我们的java spring app公开了一个Rest API,非常典型

它是分层构建的:

  1. RestController类
  2. 服务类
  3. 存储库类
  4. oracle DB
  5. 这些图层使用注释@RestController,@ Service等与@Autowired访问较低级别。

    现在,所有这些人最终都是单身人士。但由于没有状态,它应该不是问题。多个请求可以使用相同的单例对象(在不同的执行线程中)同时进行。至少,这是我的理解。

    现在,对于我们的一个新的Rest API端点,我们必须调用第三方API,因此数据路径将是这样的:

    1. RestController
    2. 服务
    3. CustomRestClient
    4. 第三方服务器
    5. 在CustomRestClient中,有一个@Autowired RestTemplate实例。因为一切都是单身,所以这个rest_template也是一个 现在我检查它是线程安全的,所以它应该没有任何并发​​访问异常。不过我想知道:

      这是否会构成瓶颈,所有并行请求都必须等待使用这个共享的RestTemplate?有一些内部锁或东西?如何确保没有线程必须等待?

      (顺便说一下,rest_template自动装配的一个原因是帮助进行模拟单元测试)

      我想我的问题更多的是关于如何确保这个Spring单例体系结构可以服务于大量并行请求,即使一个层必须使用可能具有状态的注入对象?如果这是不可能的并且该对象必须用“new”实例化,那么我们如何使用模拟方法对该类进行单元测试呢?

0 个答案:

没有答案