携手创作,共同成长!这是我参与「掘金日新计划 · 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 的组成、功能以及如何自定义。建议读者最好结合之前的三篇文章一起来看,会加深理解。