FactoryBean
public interface FactoryBean<T> {
//获取对象
T getObject() throws Exception;
//获取对象类型
Class<?> getObjectType();
//是否单例,默认true
default boolean isSingleton() {
return true;
}
}
FactoryBean是一种特殊的bean,本身又是个工厂,实现了FactoryBean的bean会被注册到容器中。
ObjectFactory
public interface ObjectFactory<T> {
//获取对象
T getObject() throws BeansException;
}
ObjectFactory就是个对象工厂。
示例对比
public class Cat {
public Cat() {
System.out.println("调用了Cat构造器");
}
}
@Component
public class MyFactoryBean implements FactoryBean<Dog> {
@Override
public Dog getObject() throws Exception {
return new Dog();
}
@Override
public Class<?> getObjectType() {
return Dog.class;
}
@Override
public boolean isSingleton() {
return true;
}
}
MyFactoryBean用来生成Dog对象。
public class Cat {
public Cat() {
System.out.println("调用了Cat构造器");
}
}
@Component
public class MyObjectFactory implements ObjectFactory<Cat> {
@Ov