首页 > 解决方案 > 带有@Controller 注释的类是单个对象吗?

问题描述

我知道两个具有相同内容的请求使用不同的线程。而且我认为不同的线程会使用@Controller 注解创建不同的实例。但是当我运行下面的代码时,我发现我的想法是错误的。

测试代码:

@Controller
@RequestMapping("test")
public class TestADEDSAController {
    private String string = "";

    @RequestMapping("controllerTest")
    @ResponseBody()
    public String controllerTest(@RequestParam String string) {
        return this.string += string;
    }
}

第一次响应内容是这样的:

test

第二次是这样的:

testtest

似乎JVM中只有一个Test实例。

我想知道JVM中总是只有一个@Controller实例是否属实?另外,我在哪里可以找到关于这个过程的详细介绍?

标签: javaspringspring-mvctomcatio

解决方案


默认情况下,Spring 中的所有 bean 都创建为singleton(每个 IOC 容器一个)。

这是javadoc

(默认)将单个 bean 定义限定为每个 Spring IoC 容器的单个对象实例。


推荐阅读