7.7.1:使用构造器创建Bean实例

来源:互联网 发布:兴业证券软件下载 编辑:程序博客网 时间:2024/04/29 03:16

大多数情况下,BeanFactory直接通过new关键字调用构造器来创建Bean实例,而class属性指定了Bean实例的实现类。但这并不是实例化Bean的唯一方法。

创建Bean通常有如下三个方法

① 调用构造器创建Bean实例。

② 调用静态工厂方法创建Bean。

③ 调用实例工厂方法创建Bean。

本篇文章讨论使用构造器创建Bean实例:

使用构造器来创建Bean实例是最常见的情况,如果采用设置注入的方式,要求该类提供无参数构造器。

BeanFactory将使用无参数构造器来创建Bean实例,该实例是个默认实例,Spring对Bean实例的所有属性执行默认初始化,即所有基本类型的值初始化为0或false,所有引用类型的值初始化为null。

接下来,BeanFactory会根据配置文件决定依赖关系,先实例化被依赖的Bean实例,然后为Bean注入依赖关系。最后将一个完整的Bean实例返回给程序,该Bean实例的所有属性,已经由Spring容器完成了初始化。


Axe.java :

public interface Axe {public String chop();}
Person.java :
public interface Person {public void useAxe();}
SteelAxe.java :
public class SteelAxe implements Axe {@Overridepublic String chop() {return "钢斧砍柴真快";}public SteelAxe() {System.out.println("Spring实例化依赖Bean:SteelAxe实例...");}}
Chinese.java :
public class Chinese implements Person{@Overridepublic void useAxe() {System.out.println(axe.chop());}private Axe axe;public void setAxe(Axe axe) {this.axe = axe;}public Chinese() {System.out.println("Spring实例化主调Bean:Chinese实例...");}}
bean.xml核心配置 :
 <bean id="chinese" class="com.bean.Chinese">        <property name="axe" ref="steelAxe"/>   </bean>      <bean id="steelAxe" class="com.bean.SteelAxe"/>
Test.java :
public class Test {public static void main(String[] args) {ApplicationContext ctx=new ClassPathXmlApplicationContext("bean.xml");Person person=(Person) ctx.getBean("chinese");person.useAxe();}}
运行Test.java,控制台输出:


执行结果清楚地反映了执行过程

① 程序创建ApplicationContext实例。

② 调用Chinese类的默认构造器创建默认实例。

③ 根据配置文件注入依赖关系:先实例化依赖Bean,然后将依赖Bean注入。

④ 返回一个完整的Chinese实例。

原创粉丝点击