Spring 入门学习 —— XML 格式文件介绍(十八)(工厂方法与FactoryBean [6])

62 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第22天,点击查看活动详情

上一篇文章我们引入并初步介绍了FactoryBean,这篇文章我们介绍一些FactoryBean 的组成及使用方法。

FactoryBean 的组成

FactoryBean 本质是一个接口,它由三个方法组成:

public interface FactoryBean {
    Object getObject() throws Exception;
    Class getObjectType();
    boolean isSingleton();
}

FactoryBean 的功能

上述三个方法的功能其实看方法名称就可以猜出它们的功能,现在对这三个方法的功能介绍如下:

getObject() 方法会返回FactoryBean 生产的对象实例,我们就是需要实现FactoryBean 接口,然后重写这个方法,给出自己自定义的对象实例化逻辑;

同样,getObjectType() 方法看方法定义就可以知道,它的作用就是返回上一个方法返回的对象的类型。这里有一点需要注意一下,如果在预先无法获知返回的对象类型的时候,那么这个方法就会返回null;

isSingleton() 的作用就是用来说明工厂方法(上面提到的getObject())生产的对象是不是以singleton 的方式存到spring 容器当中的。是就返回true,反之就返回false。

自定义FactoryBean

现在我们结合一个实际应用的例子来说明FactoryBean 如何使用。假设一个这场的场景:我们要提供一个获取当天日期的功能,它要以String 字符串的形式给出,代码如下:

public class TodayStringDateFactoryBean implements FactoryBean {
    public Object getObject throw Exception {
        return new DateTime().toString();
    }
    public Class getObjectType() {
        return String.class;
    }
    public class isSingleton() {
        return false;
    }
}

这样就完成了一个工厂bean 的定义。相比于之前的自定义工厂方法实现类来看,这种直接通过java 代码的实现看起来就很简单明了,同时含义十分清晰,开发人员使用起来的理解成本很低。

总结

这篇文章主要介绍了FactoryBean 的组成、功能以及如何自定义。建议读者最好结合之前的三篇文章一起来看,会加深理解。