静态工厂方法:直接调用某一个类的静态方法就可以返回bean的实例。

一、知识点

概念:

  1. class:指向静态工厂方法的全类名。
  2. factort-method:指向静态工厂方法的名字。
  3. constructor-arg:如果工厂方法需要传入参数,则使用constructor-arg的value属性来配置参数。

调用静态工厂方法创建bean是将对象创建的过程封装到静态方法中,当客户端需要对象时,只需要简单地调用静态方法,而不需要关心对象的创建细节。

要声明通过静态方法创建的bean,需要在bean的class属性里指定拥有该工厂的方法的类,同时在factory-method属性里指定工厂方法的名称。

最后,使用<constructor-arg>元素为该方法传递方法参数。

二、代码实现

新建一个工厂类:

写配置staticfactory.xml:

注意:不是配置静态工厂方法实例,而是配置bean实例。

初始化流程如下:

  1. 建立ioc容器的时候,调用god god1 = (god) applicationContext.getBean(“god1”);
  2. 容器尝试去实例化god1,此时static已经实例化好了map gods。
  3. 然后根据xml配置class=”factory.staticfactory”找到了工厂类,通过”factory-method=”getgod”执行工厂类中的函数getgod。
  4. 根据<constructor-arg value=”xie”></constructor-arg>将值xie带入到getgod中。
  5. 执行getgod获得了返回值god对象,拿到了map里面映射为xie的god对象。
  6. 最后syso出来。

得到结果:

把xml中的xie调整为godlikexie,看看结果如何。

得到结果:

三、总结

重复一遍配置参数:

  1. class:指向静态工厂方法的全类名。
  2. factort-method:指向静态工厂方法的名字。
  3. constructor-arg:如果工厂方法需要传入参数,则使用constructor-arg的value属性来配置参数。

这个就是静态工厂方法。掌握配置流程即可。

发表评论

电子邮件地址不会被公开。 必填项已用*标注