解析Bean
XMLBeanFactory
加载Bean
FactoryBean
public interface FactoryBean<T> {
String OBJECT_TYPE_ATTRIBUTE = "factoryBeanObjectType";
//获得目标实例
@Nullable
T getObject() throws Exception;
//获得要生成的目标类的类型
@Nullable
Class<?> getObjectType();
//是否为单例
default boolean isSingleton() {
return true;
}
}
Spring使用工厂模式来实例化某些复杂的Bean,来避免复杂的XML配置。
例子
public class MyBean{
public MyBean(/*多个参数*/){
//复杂的初始化过程
}
}
public class MyBeanFactionary implements FactoryBean<MyBean>{
@Override
public MyBean getObject() throws Exception {
//构造多个复杂参数
MyBean myBean=new MyBean(/*写入参数*/);
//对myBean进行定制化
return myBean;
}
@Override
public Class<?> getObjectType() {
return MyBean.class;
}
@Override
public boolean isSingleton() {
return FactoryBean.super.isSingleton();
}
}
<bean id="myBean" class="com.MyBeanFactionary" /> 也可以传入自定义参数
通过以上代码可以避免复杂的Xml配置