Java Spring@Autowire注释

Java Spring@Autowire注释,java,spring,Java,Spring,我对Spring Autowire注释有一个问题。场景如下:Iam在a类上使用@Autowire,并在两个位置使用它-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("k

我对Spring Autowire注释有一个问题。场景如下:Iam在a类上使用@Autowire,并在两个位置使用它-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);
公共B类
{
@自动连线
私人A;
......
Map map1=a.getNameValues();
Map 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);
 }
公共C类
{
@自动连线
私人A;
......
Map map1=a.getNameValues();
Map map2=a.get(“key”);
if(map2!=null)
map1.putAll(map2);
}

程序控件从B类流向C类。因此,由于A类在这两个位置都是自动连接的。因此,当控件首先到达B类时,会检索map2并将其放入map1中。当控件到达C类时,map1已经有了map2值。有什么可能的方法来控制这类场景?因为我希望这两个类都能工作依赖并使用Autowired类。请告诉我您的想法。

@Autowire将自动向给定属性中注入Springbean

听起来您的问题实际上与注入的bean的范围有关。因此假设您的
A
类如下所示:

@Component
public class A {
    ....
}
然后,spring将创建
a
(在给定的应用程序上下文中)的单个实例(也称为单例),并将其注入
B
C

问题-这就是您试图解决的问题吗?当您说希望两个类独立运行时,您的意思是
B
中的
A
对象和
C
中的
对象是完全相同的对象

要让spring连接
a
的新实例,只需将
a
的范围更改为原型

@Component
@Scope(value = "prototype")
public class A {
    ....
}  
或者使用xml

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


具有更好的类设计/体系结构。此重复逻辑可能属于A类,而不在A类之外。重复逻辑在这两个类中都有自己的用法。您能告诉我还有什么其他选择吗?我以前不知道此功能,谢谢。我相信您指的是xml中的
scope=“prototype”