Spring 我可以直接在Singleton bean中自动连接proptotype bean吗
我查看了一些遗留代码,发现这里有一个singelton bean,比如X,我在其中自动连接了一个原型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,我们有两种方法 作用域代理 方法注入 现在在上面的代码中
@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一样长