gpt4 book ai didi

java - 在服务层做一个 STATIC 方法有什么害处——Spring 3

转载 作者:IT老高 更新时间:2023-10-28 13:45:45 25 4
gpt4 key购买 nike

我知道这不是最好的设计,而只是一个 Spring 新手的想法。

现在我们可以在 Spring 框架中轻松地autowire 任何服务方法方便地相互连接。但是创建服务类的静态工厂方法并到处调用它有什么缺点呢?

这样的情况很常见:

@Autowired
CustomerService customerService;

....
AccountDetail ad = customerService.getAccountDetail(accountId, type);

但这也应该有效:

AccountDetail ad = CustomerService.getAccountDetail(accountId, type); //if we make getAccountDetail(String, String) static

那么为什么会有像 autowire 这样的设计呢?它看起来很花哨而且很酷,但其背后的工作仍然是在另一个服务对象上创建一个服务 bean 实例。

说真的,当 Spring 遍布市场时,很多帖子和文章都在谈论优点和翻新。但它是否能保证更好的性能(比如使用 autowire 而不是 static)?

最佳答案

原因有很多:

  • 在测试期间,您不能轻松地将 CustomerService 替换为模拟(PowerMock 等工具除外)

  • 静态方法不参与标准的、基于代理的 AOP(无事务、安全、自定义方面)

  • 您不能再使用花哨的注入(inject)技术,例如将 HTTP 请求(请求范围)注入(inject)单例范围的服务(无论如何设计都很糟糕,但是...)

但要完整,也有优点:

  • static 方法实际上更接近您的意图,Spring bean 很少有状态,因此它们实际上不需要实例来工作

  • static 调用可能更快(这与 99% 的程序无关)

关于java - 在服务层做一个 STATIC 方法有什么害处——Spring 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13256406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com