使用FactoryBean实现延迟加载
时间: 2023-11-28 19:52:42 浏览: 25
FactoryBean是Spring框架中的一个接口,它提供了一种在容器中创建bean的方式。使用FactoryBean可以实现延迟加载,即在需要的时候才创建bean实例。下面是一个简单的示例:
1. 创建一个工厂类,实现FactoryBean接口:
```
public class MyBeanFactory implements FactoryBean<MyBean> {
private boolean lazyInit = true;
@Override
public MyBean getObject() throws Exception {
System.out.println("getObject() called");
return new MyBean();
}
@Override
public Class<?> getObjectType() {
return MyBean.class;
}
@Override
public boolean isSingleton() {
return true;
}
public boolean isLazyInit() {
return lazyInit;
}
public void setLazyInit(boolean lazyInit) {
this.lazyInit = lazyInit;
}
}
```
2. 配置bean:
```
<bean id="myBeanFactory" class="com.example.MyBeanFactory">
<property name="lazyInit" value="true"/>
</bean>
```
3. 在需要使用MyBean的地方,通过ApplicationContext获取实例:
```
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
MyBean myBean = (MyBean) context.getBean("myBeanFactory");
```
在这个例子中,当ApplicationContext获取MyBean实例时,如果lazyInit属性为true,则不会立即创建MyBean实例,而是在第一次调用getObject()方法时才会创建。如果lazyInit属性为false,则在容器启动时就会创建MyBean实例。
使用FactoryBean可以实现延迟加载,避免在启动时就创建所有的bean,提高了应用程序的启动速度。