Java | Spring框架 | BeanFactory与ApplicationContext

87 阅读2分钟

Spring容器:BeanFactory与ApplicationContext

Spring容器是Spring框架的核心,负责实例化、配置和组装Bean。

Spring容器有两种主要类型:BeanFactoryApplicationContext

一、BeanFactory

  • 基本功能BeanFactory是Spring框架的基础设施,提供了完整的IoC支持。它负责实例化、配置和组装Bean。
  • 使用方式BeanFactory在启动时并不会实例化Bean,而是在需要时懒加载实例化Bean。这提供了更大的灵活性,但也有一些限制,比如不支持声明式事务管理。
  • 适用场景:适用于资源受限的环境,或者当应用程序需要更多控制Bean的生命周期时。

二、ApplicationContext

  • 扩展功能ApplicationContextBeanFactory的子接口,提供了更多企业级的支持,如国际化、事件传播等。
  • 使用方式ApplicationContext在启动时就会实例化所有单例Bean。它还支持基于注解的依赖注入。
  • 适用场景:适用于大多数企业级应用,特别是那些需要完整Spring框架特性的应用。

三、代码示例:

使用BeanFactory

// BeanFactoryExample.java
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
public class BeanFactoryExample {
    public static void main(String[] args) {
        // 创建BeanFactory
        DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
        // 创建XML读取器
        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
        // 加载Bean定义文件
        reader.loadBeanDefinitions(new ClassPathResource("beans.xml"));
        // 从BeanFactory获取Bean
        MyBean myBean = beanFactory.getBean(MyBean.class);
        // 执行Bean的方法
        myBean.execute();
    }
}

使用ApplicationContext

// ApplicationContextExample.java
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class ApplicationContextExample {
    public static void main(String[] args) {
        // 创建AnnotationConfigApplicationContext
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
        // 从ApplicationContext获取Bean
        MyBean myBean = context.getBean(MyBean.class);
        // 执行Bean的方法
        myBean.execute();
        // 关闭ApplicationContext
        context.close();
    }
}

在这个例子中,我们展示了如何使用BeanFactoryApplicationContext来获取Bean并执行操作。BeanFactoryExample使用XML配置文件和BeanFactory来获取Bean,而ApplicationContextExample使用注解配置和ApplicationContext来获取Bean。


四、AI时代的游轮已经到来

如果你觉得开发过程中存在重复性工作,效率不够高。

不妨看看影子的AI+编程玩法,涵盖了Java | AI+编程的学习资料,助力每一位编程人员提高效率,无论你是在校学生或是工作者,都应为未来的AIG时代做准备。

赚到啦!满满的AI+编程学习资源,AI与编程资料分享! - 掘金 (juejin.cn)