大多数情况下,Spring容器直接通过new关键字调用构造器来创建Bean实例,而class属性指定了Bean实例的实现类。因此,<bean/>元素必须指定Bean实例的class属性,但这并不是实例化Bean的唯一方法。
Spring支持使用如下方式来创建Bean:
[b]1.调用构造器创建Bean[/b]
[b]2.调用静态工厂方法创建Bean[/b]
[color=red]此处省略了接口being,其实现类Dog(包含setMsg()方法),以及静态工厂类 BeingFactory(包含静态方法staticMethod())[/color]
[b]3.调用实例工厂方法创建Bean[/b]
只需将2中的静态方法改为实例方法即可(方法不含static),其他类似。
Spring支持使用如下方式来创建Bean:
[b]1.调用构造器创建Bean[/b]
[b]2.调用静态工厂方法创建Bean[/b]
<!--下面配置驱动Spring调用工厂类BeingFactory的静态方法staticMethod()来创建
Bean,该配置会驱动Spring以反射方式执行如下代码:
dog=BeanFactory.staticMethod("dog");
-->
<bean id="dog" class="BeingFactory" factory-method="staticMethod">
<!--配置静态工厂方法的参数-->
<constructor-arg value="dog"/>
<!--驱动Spring以"我是狗"为参数来执行dog的setMsg()方法-->
<property name="msg" value="我是狗"/>
</bean>
[color=red]此处省略了接口being,其实现类Dog(包含setMsg()方法),以及静态工厂类 BeingFactory(包含静态方法staticMethod())[/color]
[b]3.调用实例工厂方法创建Bean[/b]
只需将2中的静态方法改为实例方法即可(方法不含static),其他类似。