Spring boot 为单例作用域 bean 提供不同的哈希码

问题描述 投票:0回答:1
@Component
@Qualifier("impl1")
public class Implementation1 implements BaseInterface{  
    @Override
    public String process() {
        return "Implementation1";
    }

}

@RestController
public class HomeController {
    
    @GetMapping("/impl1")
    @Autowired
    public String impl1(@Qualifier("impl1")Implementation1 impl) {
        return impl.process()+" "+impl.hashCode();
    }
}

默认情况下,所有 bean 在 Spring Boot 应用程序中都应该是单例范围,因此我认为它们的 hashCode 也应该相同。但对我来说情况并非如此。如果我在这里遗漏了什么,请告诉我。

上面是Controller和Bean类,BaseInterface是一个带有process()抽象方法的简单接口。 然而,对于每个请求,我都会得到不同的哈希码。如果它被视为单例,则每个请求的 hashCOde 应该是相同的。

我希望每次都有相同的哈希码

java spring-boot singleton spring-boot-starter
1个回答
0
投票

这是

的语法糖
public String impl1(@RequestParam @Qualifier("impl1")Implementation1 impl) 

如果您查看 @RequestParam 的定义,您应该会看到参数的实际范围(应该是 Session)。

更改该范围将是一个困难的提议,因为您将使用同一对象处理并发请求。

© www.soinside.com 2019 - 2024. All rights reserved.