FactoryBean(自定义Bean的实例化逻辑)
程序员文章站
2022-05-23 18:04:49
...
FactoryBean接口是Spring IoC容器Bean实例化逻辑的一个扩展点,如果有复杂的初始化Bean逻辑,则可以选择创建自定义FactoryBean,在该类中编写初始化逻辑,然后把自定义FactoryBean注入到容器中即可。
FactoryBean提供了三种方法:
-
Object getObject():返回此工厂创建的对象的实例。实例可以共享,具体取决于该工厂是否返回单例或原型。
-
boolean isSingleton():true表示返回单例对象。
-
Class getObjectType():返回getObject()方法返回的对象类型;如果类型null,则返回null。
从容器中获取Bean的方式
-
获取自定义FactoryBean本身:在bean名称前加上&符号,如-ApplicationContext.getBean("&beanA");
-
获取自定义FactoryBean生成的Bean:正常调用即可返回生成的Bean,如-ApplicationContext.getBean("beanA");
使用示例
自定义FactoryBean
@Component
publicclass BeanAFactoryBean implements FactoryBean<BeanA> {
@Override
public BeanA getObject() throws Exception {
return new BeanA("factory bean");
}
@Override
public Class<?> getObjectType() {
return BeanA.class;
}
}
BeanA
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class BeanA {
private String name;
}
打印BeanA的name属性值
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(BeanAFactoryBean.class);
@Test
public void test() {
BeanA bean = applicationContext.getBean(BeanA.class);
System.out.println(bean.getName());
}
推荐阅读
-
02Spring基于xml的IOC配置--实例化Bean的三种方式
-
Spring Bean的实例化之属性注入源码剖析过程
-
Spring实例化Bean的五种方式
-
聊聊spring之bean对象的实例化过程
-
spring配置文件(spring的开发步骤;bean中的scope,init-method,destroy-method;bean的工厂静态方法实例化;工厂动态方法实例化)
-
thinkphp 如何实例化自定义的类
-
使用Python自动化破解自定义字体混淆信息的方法实例
-
Spring之bean的实例化和依赖注入
-
Spring | IOC之Bean的三种实例化
-
Spring Bean的获取与实例化