Bean Factory是Spring容器中的一个核心组件,用于创建和管理Bean。它在使用时对Bean进行延迟初始化,即只有在第一次从Bean Factory中请求Bean时才会初始化,因此也被称为惰性初始化。
ApplicationContext是另一个Spring容器,它支持两种Bean的初始化方式:立即初始化和惰性初始化。默认情况下,ApplicationContext会使用立即初始化,即当应用程序启动时立即初始化所有Bean。
以下是给出惰性初始化和立即初始化的代码示例:
惰性初始化:
public class MyBean {
public MyBean() {
System.out.println("Bean正在进行初始化...");
}
}
public class Main {
public static void main(String[] args) {
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
// Bean尚未初始化
System.out.println("开始从BeanFactory中获取Bean...");
MyBean myBean = beanFactory.getBean(MyBean.class);
// Bean现在被初始化
System.out.println("从BeanFactory中获取Bean成功:" + myBean.toString());
}
}
立即初始化:
public class MyBean {
public MyBean() {
System.out.println("Bean正在进行初始化...");
}
}
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// Bean已经初始化
System.out.println("从ApplicationContext中获取Bean...");
MyBean myBean = context.getBean(MyBean.class);
System.out.println("从ApplicationContext中获取Bean成功:" + myBean.toString());
}
}
在上述代码示例中,我们使用了XmlBeanFactory和ClassPathXmlApplicationContext来创建Bean Factory和ApplicationContext。在获取Bean的时候,我们可以使用BeanFactory.getBean方法或者ApplicationContext.getBean方法,来实现Bean的获取。值得注意的是,当我们使用ApplicationContext时,Bean已经被立即初始化好了。