@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 应该是相同的。
我希望每次都有相同的哈希码
这是
的语法糖public String impl1(@RequestParam @Qualifier("impl1")Implementation1 impl)
如果您查看 @RequestParam 的定义,您应该会看到参数的实际范围(应该是 Session)。
更改该范围将是一个困难的提议,因为您将使用同一对象处理并发请求。