2

我瞭解到,當IoC容器初始化時,它會創建實例並注入依賴關係。IoC如何爲bean創建實例

它是如何創建對象的?它是使用新操作符創建的嗎?

回答

2

在Java中,實例化對象的唯一方法是調用構造函數。 您可以使用new運算符或反射來調用構造函數。

春天使用反射instanciate一個對象。

0

好的這裏:

Spring IoC容器管理一個或多個bean。這些bean是使用已經提供給容器的配置元數據中定義的指令(通常以XML定義的形式)創建的。 在容器內部,這些bean定義表示爲的BeanDefinition對象,其中包含(以及其他信息)以下元數據:

1. A package-qualified class name: this is normally the actual implementation class of the bean being defined. However, if the bean is to be instantiated by invoking a static factory method instead of using a normal constructor, this will actually be the class name of the factory class. 
    2. Bean behavioral configuration elements, which state how the bean should behave in the container (prototype or singleton, autowiring mode, initialization and destruction callbacks, and so forth). 
    3. Constructor arguments and property values to set in the newly created bean. An example would be the number of connections to use in a bean that manages a connection pool (either specified as a property or as a constructor argument), or the pool size limit. 
    4. Other beans which are needed for the bean to do its work, that is collaborators (also called dependencies). 

所以,你看,容器本身對如何創建豆類無柄。在java中創建對象可以用new運算符輕鬆完成。

0

1如果在配置元數據中定義了非私有構造函數並聲明瞭相同的類,則使用反射對其進行實例化。 getDeclaredConstructor() of a classAPI

  1. 一些類正在使用如果在元數據中所定義的靜態或非靜態工廠方法實例化。

請閱讀部分4.3.2 spring documentation

實例化bean
相關問題