我在春季有一个关于@Service
的问题,但是我没有找到任何回应。
情况:
我有一个使用@RestController
的web应用程序
现在,对于我的服务层,我在一些项目中看到了两种处理方式。
@Service
和控制器类上的@Autowired
(如果更改作用域,则创建一个单例例外的bean )所以我的问题是:
@Service
创建一个单例不是内存问题,而是spring如何在1秒内处理1000个请求。他会把请求推到某种队列上,然后一次执行一个请求吗?预先感谢您的回复
发布于 2018-06-06 06:26:42
依赖注入的全部要点(使用注释,如@Autowired
和@Service
、@Component
等)让Spring为您管理服务类的实例,而不是每次需要时使用new MyService()
手动创建实例。
让Spring管理服务类实例(和其他Spring )有许多优点。例如,它使用不同的实现替换服务变得更加容易;您只需更改Spring配置即可。此外,它还使得为单元测试注入服务的模拟版本变得很容易。如果要测试的类直接使用new MyService()
实例化服务类的特定实现,那么用模拟替换真正的服务将非常困难。
例如,spring将如何在1秒内处理1000个请求。他会把请求推到某种队列上,然后一次执行一个请求吗?
不是的。在服务上调用方法就像任何其他方法调用一样。只要服务中的方法是线程安全的,就不存在不可见的队列,也没有必要这样做的理由。
服务声明的最佳实践是什么?为什么?
当您使用Spring时,请使用Spring的依赖项注入,不要在代码中使用new
实例化服务类。
发布于 2018-06-06 06:08:57
使用IOC机制,比如创建Singleton对象的位置,例如您描述的@Service,
applications管理请求客户端,它使用线程池来处理请求,并生成或使用相同的线程进行请求或响应,Spring应用程序是它自己使用容器机制创建对象,其中使用@Service和@Autowired注释。
https://stackoverflow.com/questions/50713088
复制相似问题