前言
我们知道用Spring Boot来构建项目非常的方便,开发过程中我们会使用它来快速的构建项目,自带tomcat容器、启动也会将需要配置的bean全部加载到我们的Spring容器里面。但是在调用Controller方法的时候,是单线程、还是多线程的呢,今天我们来一起研究下。
执行Controller
首先我们通过执行两个Controller方法,发现打印的日志,执行这两个方法分别是不同的线程,但是对创建的变量进行了叠加,因为Spring的默认是以单例模式创建的,所以就会导致线程不安全。
我们在Çontroller头部加入@Scope,使它的作用域变成原型模式,这时候我们再次执行方法。
@RequestMapping(“test”)
@Scope(“prototype”)
@RestController
public class TestController {
复制代码
可以看到依旧是两个线程执行,但是我们变量的操作没有进行类加,而是分别进行了i++的操作,证明每次的reqeust请求都会创建一个bean。 注意⚠️:我们写代码的时候千万不能在Çontroller里面定义常量,然后方法里面进行操作,会有很大的问题,这里只是做演示。