簡體   English   中英

彈簧@Component @Autowired

[英]Spring @Component @Autowired

我有一個帶有自動掃描和@Component批注的Spring項目。 需要使用@Autowired將某些組件注入到不同的bean中。 默認情況下,它將是與創建為單例的組件bean相同嗎? 如果是這樣,如何將同一組件的不同實例注入不同的bean?

PS:我知道它很接近基本知識,聽起來很籠統。 只是想讓自己清楚一點。

提前致謝

創建bean定義時,將創建一個配方,用於創建該bean定義所定義的類的實際實例。 Bean定義是配方的想法很重要,因為它意味着與類一樣,您可以從一個配方中創建許多對象實例。

您不僅可以控制要插入到從特定bean定義創建的對象中的各種依賴項和配置值,還可以控制從特定bean定義創建的對象的范圍。 這種方法強大而靈活,因為您可以選擇通過配置創建的對象的范圍,而不必在Java類級別上烘烤對象的范圍。 可以將Bean定義為部署在多個范圍之一中:即開即用,Spring框架支持七個范圍,其中只有在使用可感知Web的ApplicationContext時才可用。

開箱即用地支持以下范圍。 您還可以創建自定義范圍。

Singleton (默認值)將每個bean定義的范圍限定為每個Spring IoC容器的單個對象實例。

原型將單個Bean定義范圍限制為任意數量的對象實例。

請求將單個bean定義的范圍限制為單個HTTP請求的生命周期; 也就是說,每個HTTP請求都有一個自己的bean實例,它是在單個bean定義的后面創建的。 僅在可感知網絡的Spring ApplicationContext上下文中有效。

會話將單個bean定義的作用域限定為HTTP會話的生命周期。 僅在可感知網絡的Spring ApplicationContext上下文中有效。

GlobalSession將單個bean定義的作用域限定為全局HTTP Session的生命周期。 通常僅在Portlet上下文中使用時才有效。 僅在可感知網絡的Spring ApplicationContext上下文中有效。

應用程序將單個bean定義的作用域限定為ServletContext的生命周期。 僅在可感知網絡的Spring ApplicationContext上下文中有效。

Websocket將單個bean定義的作用域限定為WebSocket的生命周期。 僅在可感知網絡的Spring ApplicationContext上下文中有效。

有關更多信息,請訪問: http : //docs.spring.io/spring/docs/current/spring-framework-reference/html/

默認情況下,Spring托管bean的范圍是singleton (僅創建一個實例),如果您想讓許多實例將其定義為prototype

使用以下注釋:

@Scope("prototype")

這是一個很好的完整示例:

https://www.mkyong.com/spring/spring-bean-scopes-examples/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM