亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在不同的地方自動裝配 Singleton bean spring boot

如何在不同的地方自動裝配 Singleton bean spring boot

哈士奇WWW 2021-10-13 15:51:29
在這一點上我很困惑,我知道所有的 Spring Boot 應用程序 bean 都是單例的,根據我的理解,如果我們用@Service注釋注釋了 bean 只能@Autowired在一個類中(如果我錯了,請糾正我)這里是代碼工作正常,但我想了解它是如何工作的?一個bean如何@Autowired在兩個不同的類中?如何SampleService豆可以@Autowired在SampleController2和SampleController3在同一時間?這是推薦的方法嗎?在這種情況下,兩個線程可以并行更改 bean 中的數據嗎?SampleController2@RestController@RequestMapping(value="samplemock")public class SampleController2 {@Autowiredprivate SampleService2 sampleservice2;@RequestMapping(value="/mock1",method=RequestMethod.GET)public void mockCall1() {    sampleservice2.m1();   }}SampleController3@RestController@RequestMapping(value="samplemock2")public class SampleController3 {@Autowiredprivate SampleService2 sampleservice2;@RequestMapping(value="/mock1",method=RequestMethod.GET)public void mockCall1() {    sampleservice2.m1();   } }SampleService2@Service public class SampleService2 {public void m1() {    System.out.println("bean is autowired");    } }
查看完整描述

3 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

這是Spring 在啟動時所做的事情的簡化視圖:


// Create bean: sampleService2

SampleService2 sampleService2 = new SampleService2();


// Create bean: sampleController2

SampleController2 sampleController2 = new SampleController2();

sampleController2.sampleservice2 = sampleService2; // because @Autowired


// Create bean: sampleController3

SampleController3 sampleController3 = new SampleController3();

sampleController3.sampleservice2 = sampleService2; // because @Autowired

如您所見,單例 beansampleService2自動裝配到sampleController2和 中sampleController3。


這些 bean 被添加到存儲庫中,因此您可以在以后的任何時間點按名稱或類型查找它們。


查看完整回答
反對 回復 2021-10-13
?
達令說

TA貢獻1821條經驗 獲得超6個贊

默認情況下,正如您提到的,所有 Spring bean 都是單例,但您的第二個假設是錯誤的:同一個 bean 可以在許多其他 bean 中自動裝配。

事實上,這就是他們成為單身人士的全部意義所在。

這也意味著兩個不同的線程確實可以改變同一個 bean 的狀態。出于這個原因,您大部分時間都希望保持您的 bean 無狀態。

如果您真的需要為每個自動裝配的位置擁有一個不同的 bean 實例,您可以將該 bean 的范圍更改為prototype. 請參閱Spring bean 范圍文檔。


查看完整回答
反對 回復 2021-10-13
  • 3 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號