[英]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
(在給定應用程序上下文),並注入到這兩個B
和C
問題 -這是您要解決的問題嗎? 當您說您希望兩個類都獨立運行時,是指B
和C
中的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.