gpt4 book ai didi

java - Spring MVC RestController 作用域

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:12:56 26 4
gpt4 key购买 nike

我有以下 Spring Controller :

package hello;

import java.util.concurrent.atomic.AtomicLong;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
private final AtomicLong counter = new AtomicLong();

@RequestMapping("/test")
public String test() {
long val = counter.incrementAndGet();
return String.valueOf(val);
}
}

每次我访问 REST API 时,它都会返回一个递增的值。我刚刚学习 Java,我想知道为什么它并不总是返回 1,因为每次请求到来时必须创建一个新的 AtomicLong 实例。

最佳答案

不,TestController bean 实际上是一个单例。 @RestController注解声明一个 Spring @Component其范围默认为 SINGLETON .这记录在 @Scope 中注释:

Defaults to an empty string ("") which implies SCOPE_SINGLETON.

这意味着它将是处理每个请求的 TestController 的同一个实例。由于 counter 是一个实例变量,它对于每个请求都是相同的。

关于java - Spring MVC RestController 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33142344/

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