实例化Bean
Bean定义本质上是创建一个或多个对象的方法。 当被询问时,容器将查看命名bean的配方,并使用该bean定义封装的配置元数据来创建(或获取)实际对象。
如果使用基于XML的配置元数据,则在元素的class属性中指定要实例化的对象的类型(或类)。 这个class属性(在内部是BeanDefinition实例的Class属性)通常是必需的。 (有关异常,请参阅 Instantiation by Using an Instance Factory Method。)可以通过以下两种方式之一使用Class属性:
-
通常,在容器本身通过反射性地调用其构造函数直接创建Bean的情况下,指定要构造的Bean类,这在某种程度上等同于使用new运算符的Java代码。
-
要指定包含用于创建对象的静态工厂方法的实际类,在不太常见的情况下,容器将在类上调用静态工厂方法以创建Bean。 从静态工厂方法的调用返回的对象类型可以是同一类,也可以是完全不同的另一类。
嵌套的类名
如果要为嵌套类配置Bean定义,则可以使用嵌套类的二进制名称或源名称。
例如,如果com.example包中有一个名为SomeThing的类,并且此SomeThing类具有一个名为OtherThing的静态嵌套类,则可以用美元符号($)或点(。)分隔。 因此,bean定义中class属性的值将为com.example.SomeThing $ OtherThing或com.example.SomeThing.OtherThing。