Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 我可以直接在Singleton bean中自动连接proptotype bean吗_Spring_Spring Mvc - Fatal编程技术网

Spring 我可以直接在Singleton bean中自动连接proptotype bean吗

Spring 我可以直接在Singleton bean中自动连接proptotype bean吗,spring,spring-mvc,Spring,Spring Mvc,我查看了一些遗留代码,发现这里有一个singelton bean,比如X,我在其中自动连接了一个原型bean,如: @Controller public class X { @Autowired private Y y; // .... } Y的定义如下: @Component @scope("prototype") public class Y { } 现在根据我的理解,在singelton bean中注入原型bean,我们有两种方法 作用域代理 方法注入 现在在上面的代码中

我查看了一些遗留代码,发现这里有一个singelton bean,比如X,我在其中自动连接了一个原型bean,如:

@Controller
public class X {
  @Autowired
  private Y y;
  // ....
}
Y的定义如下:

@Component
@scope("prototype")
public class Y {

}
现在根据我的理解,在singelton bean中注入原型bean,我们有两种方法

  • 作用域代理
  • 方法注入

  • 现在在上面的代码中没有使用上述方法。因此,我是否应该相信,虽然原型bean被注入到类X中,但它仍将表现为Singleton bean,在整个应用程序范围内,X类中只有一个Y实例可用?

    在这种情况下,如果没有代理(查找方法注入),X将有一个Y实例,在调用X的方法之间不会改变(当X由应用程序上下文构造时,Y实例被创建并自动连接到X)。如果另一个类Z将Y自动连接到自身中,它也将获得自己的实例(不与X共享)。因为Y被声明为原型(每次从应用程序上下文请求Y的实例时,都会创建一个新实例)


    有关更多信息,请参见Spring IoC容器文档5.5.2和5.5.3:

    是。每次您从上下文中获取一个原型bean时,它都会创建一个新实例。 在这种情况下,Spring创建singleton(类X)ant,然后从上下文中获取Y类型的bean,将其注入X中。在应用程序的生命周期中,这种情况只会发生一次。因此,注入X的Y的实例将与X一样长