首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring @Service与Object Service

Spring @Service与Object Service
EN

Stack Overflow用户
提问于 2018-06-06 05:55:12
回答 2查看 3.6K关注 0票数 2

我在春季有一个关于@Service的问题,但是我没有找到任何回应。

情况:

我有一个使用@RestController的web应用程序

现在,对于我的服务层,我在一些项目中看到了两种处理方式。

  • 服务类上的@Service和控制器类上的@Autowired (如果更改作用域,则创建一个单例例外的bean )
  • 创建一个像服务一样的对象 MyService服务=新的MySerivce()

所以我的问题是:

  • 每次为每个控制器调用创建一个对象会不会成为内存问题?如果我创建一个负载测试(使用Apache )并发送1000个请求,它将创建我的服务的1000个对象,所以可能是一个问题,不是吗?
  • @Service创建一个单例不是内存问题,而是spring如何在1秒内处理1000个请求。他会把请求推到某种队列上,然后一次执行一个请求吗?
  • 服务声明的最佳实践是什么?为什么?

预先感谢您的回复

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-06 06:26:42

依赖注入的全部要点(使用注释,如@Autowired@Service@Component等)让Spring为您管理服务类的实例,而不是每次需要时使用new MyService()手动创建实例。

让Spring管理服务类实例(和其他Spring )有许多优点。例如,它使用不同的实现替换服务变得更加容易;您只需更改Spring配置即可。此外,它还使得为单元测试注入服务的模拟版本变得很容易。如果要测试的类直接使用new MyService()实例化服务类的特定实现,那么用模拟替换真正的服务将非常困难。

例如,spring将如何在1秒内处理1000个请求。他会把请求推到某种队列上,然后一次执行一个请求吗?

不是的。在服务上调用方法就像任何其他方法调用一样。只要服务中的方法是线程安全的,就不存在不可见的队列,也没有必要这样做的理由。

服务声明的最佳实践是什么?为什么?

当您使用Spring时,请使用Spring的依赖项注入,不要在代码中使用new实例化服务类。

票数 2
EN

Stack Overflow用户

发布于 2018-06-06 06:08:57

使用IOC机制,比如创建Singleton对象的位置,例如您描述的@Service,

applications管理请求客户端,它使用线程池来处理请求,并生成或使用相同的线程进行请求或响应,Spring应用程序是它自己使用容器机制创建对象,其中使用@Service和@Autowired注释。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50713088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档