簡體   English   中英

Spring @Autowire批注

[英]Spring @Autowire annotation

我對Spring Autowire Annotation有一個疑問。場景是這樣的:Iam在A類上使用@Autowire並在2個地方使用它-B類和C類,如下所示:

public class B 
{

@Autowired
private A a;
......

Map<String, Map<String,String>> map1=a.getNameValues();
Map<String, Map<String, String>> map2 = a.get("key");
if (map2!=null)
 map1.putAll(map2);

以及其他C類,如下所示:

public class C 
 {

@Autowired
private A a;
......

Map<String, Map<String,String>> map1=a.getNameValues();
Map<String, Map<String, String>> map2 = a.get("key");
if (map2!=null)
map1.putAll(map2);
 }

程序控制從B類流向C類。因此,由於A類在兩個地方都自動接線。 因此,當控件首先進入類B時,將檢索map2並將其放入map1中。 當控件進入C類時,map1已經具有map2值。 有什么方法可以控制這種情況? 因為我希望兩個類都可以獨立工作並使用Autowired類。 讓我知道你的想法。

@Autowire會自動將spring bean注入給定的屬性。

聽起來您的問題實際上與所注入的bean的范圍有關。 因此,假設您的A類如下所示:

@Component
public class A {
    ....
}

然后會發生什么是春天將創建一個單一實例(又名一個Singleton) A (在給定應用程序上下文),並注入到這兩個BC

問題 -這是您要解決的問題嗎? 當您說您希望兩個類都獨立運行時,是指BC中的A對象是完全相同的對象嗎?

為了使彈簧連接A的新實例,您只需將A的范圍更改為原型即可。

@Component
@Scope(value = "prototype")
public class A {
    ....
}  

或在xml中

<bean id="a" class="A" scope="prototype"/>

暫無
暫無

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

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