經常看到說Spring 通過 ThreadLocal 把大部分有狀態的 Bean 保存在 ThreadLocal 中,從而實作在單例模式下實作執行緒安全,我的問題是:既然我們spring 中把 Bean 宣告為單例的,所以應該是 new 不出來多個 Bean 實體,那我們又怎么使用 ThreadLocal 在每個執行緒中中都保存自己的的 Bean 呢, 這不又是多例了嗎
uj5u.com熱心網友回復:
這兩者沒有啥沖突吧uj5u.com熱心網友回復:
因為spring的bean的作用域不僅僅只有single.參考
https://baijiahao.baidu.com/s?id=1610298792072480906&wfr=spider&for=pc
uj5u.com熱心網友回復:
我知道bean 的作用域不知一種,但是為什么在單例模式下可以用ThreadLocal在每個執行緒拷貝屬于自己的beanuj5u.com熱心網友回復:
有沖突吧,只有多例才能創建多個物件,而單例無法創建多個物件,所以也就無法通過ThreadLocal為每個執行緒拷貝屬于自己的Bean,但是事實上就是在單例模式下可以用ThreadLocal在每個執行緒拷貝屬于自己的bean ,這不是沖突了嗎uj5u.com熱心網友回復:
Spring 通過 ThreadLocal 把大部分有狀態的 Bean 保存在 ThreadLocal 中uj5u.com熱心網友回復:
這個你是在哪里看到的啊。
uj5u.com熱心網友回復:
不是好多博客都這么寫么
uj5u.com熱心網友回復:
你應該是看岔了
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/91822.html
標籤:Java EE
