当前位置: 首页 > wzjs >正文

互动营销网站建设做网站定位

互动营销网站建设,做网站定位,wordpress备份与恢复,免费律师咨询平台ApplicationContext 和 BeanFactory 是 Spring 框架中两个核心的接口,它们都用于管理和访问 Spring 容器中的 Bean,但在功能和使用场景上有显著的区别。以下是它们的详细对比,并结合源码进行讲解。 一、 功能对比 特性BeanFactoryApplicati…

ApplicationContext 和 BeanFactory 是 Spring 框架中两个核心的接口,它们都用于管理和访问 Spring 容器中的 Bean,但在功能和使用场景上有显著的区别。以下是它们的详细对比,并结合源码进行讲解。

一、 功能对比

特性BeanFactoryApplicationContext
Bean 管理支持基本的 Bean 管理和依赖注入。支持 BeanFactory 的所有功能,并扩展了更多特性。
事件发布不支持。支持事件发布机制(ApplicationEvent)。
国际化支持不支持。支持国际化(MessageSource)。
资源访问不支持。支持资源访问(ResourceLoader)。
AOP 支持不支持。支持 AOP(面向切面编程)。
注解支持不支持。支持注解配置(如 @Component@Autowired)。
加载时机懒加载(Lazy Loading)。预加载(Eager Loading),启动时初始化所有单例 Bean。
使用场景适合资源受限的环境(如移动设备)。适合大多数企业级应用。

二、源码讲解

1、BeanFactory源码

BeanFactory是Spring容器的最基本接口,定义了Bean的获取和管理方法

public interface BeanFactory {// 获取 BeanObject getBean(String name) throws BeansException;
​// 获取指定类型的 Bean<T> T getBean(String name, Class<T> requiredType) throws BeansException;
​// 判断是否包含指定名称的 Beanboolean containsBean(String name);
​// 判断 Bean 是否为单例boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
​// 判断 Bean 是否为原型boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
​// 获取 Bean 的类型Class<?> getType(String name) throws NoSuchBeanDefinitionException;
​// 获取 Bean 的别名String[] getAliases(String name);
}
  • 特点

    • BeanFactory是一个简单的容器接口,只提供最基本的Bean管理功能

    • 默认适用懒加载(Lazy Loading)机制,只有在调用getBean()时才会初始化Bean

2、ApplicationContext 源码

ApplicationContextBeanFactory 的子接口,扩展了更多功能。

public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
​// 获取容器的唯一 IDString getId();
​// 获取容器的显示名称String getDisplayName();
​// 获取容器的启动时间long getStartupDate();
​// 获取父容器ApplicationContext getParent();
​// 获取 AutowireCapableBeanFactoryAutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException;
}
  • 扩展功能:

    1. 事件发布

      void publishEvent(ApplicationEvent event);
      • 支持事情驱动变成,可以通过ApplicationEventPublisher发布事件

    2. 国际化支持

      String getMessage(String code, Object[] args, String defaultMessage, Locale locale);
      • 支持通过MessageSource实现国际化

    3. 资源访问

      Resource[] getResources(String locationPattern) throws IOException;
      • 支持通过ResourceLoader访问资源文件

    4. AOP支持

      • 通过集成AOP模块,支持面向切面编程

    5. 注解支持

      • 支持通过注解(如@Component、@Autowired)配置Bean

  • 特点:

    • ApplicationContext 是一个高级容器接口,提供了更多企业级功能。

    • 默认采用预加载(Eager Loading)机制,启动时初始化所有单例 Bean。

三、具体实现类

1、BeanFactory 的实现类

  • DefaultListableBeanFactory

    • 是BeanFactory的默认实现类,提供了完整的Bean管理功能

    • 源码示例:

      DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
      XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
      reader.loadBeanDefinitions(new ClassPathResource("beans.xml"));
      MyBean myBean = beanFactory.getBean(MyBean.class);

    (这里就是在Resources下beans.xml这个文件,约定大于配置)

2、ApplicationContext的实现类

  • ClassPathXmlApplicationContext

    • 从类路径加载 XML 配置文件的 ApplicationContext实现。

    • 源码示例:

      ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
      MyBean myBean = context.getBean(MyBean.class);
  • AnnotationConfigApplicationContext

    • 基于注解配置的ApplicationContext实现

    • 源码示例

      ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
      MyBean myBean = context.getBean(MyBean.class);

    AppConfig注解类

  • FileSystemXmlApplicationContext

    • 用于读取系统文件目中的配置文件

四、 使用场景

  • BeanFactory

    • 适合资源受限的环境(如移动设备)。

    • 需要手动调用 getBean() 初始化 Bean。

  • ApplicationContext

    • 适合大多数企业级应用。

    • 提供更多高级功能(如事件发布、国际化、AOP 等)。


五、 总结

  • BeanFactory 是 Spring 容器的基础接口,提供最基本的 Bean 管理功能。

  • ApplicationContextBeanFactory 的扩展,提供了更多企业级功能。

  • 在实际开发中,通常使用 ApplicationContext,因为它功能更强大,使用更方便。

通过理解 BeanFactoryApplicationContext 的区别和源码实现,可以更好地掌握 Spring 容器的核心机制。


文章转载自:

http://w7pRgSb0.dqdss.cn
http://9LsRzEpd.dqdss.cn
http://DVNmK3C6.dqdss.cn
http://9zAEQ3Wr.dqdss.cn
http://4YXBJtfF.dqdss.cn
http://8wQFFX5J.dqdss.cn
http://MyYcxQAP.dqdss.cn
http://idSi408g.dqdss.cn
http://KZeX8LBr.dqdss.cn
http://9ZaHcB5W.dqdss.cn
http://ahUNJI7W.dqdss.cn
http://rro9GX5J.dqdss.cn
http://L7u5GSK1.dqdss.cn
http://x62gq0qC.dqdss.cn
http://HVsHDJ6Z.dqdss.cn
http://1fTPj7uU.dqdss.cn
http://3pu4SJ7n.dqdss.cn
http://RQJFh5aJ.dqdss.cn
http://h6JBT9Ks.dqdss.cn
http://WwnS9KD7.dqdss.cn
http://mlVVeTNS.dqdss.cn
http://VN9EXhXX.dqdss.cn
http://2PdVfqID.dqdss.cn
http://YjjEltlE.dqdss.cn
http://Bl9b0zOp.dqdss.cn
http://41UGqVUI.dqdss.cn
http://rWhBL0Ei.dqdss.cn
http://OuXoKhKq.dqdss.cn
http://ZcW8StfE.dqdss.cn
http://qtSdc23K.dqdss.cn
http://www.dtcms.com/wzjs/761257.html

相关文章:

  • 摄像机怎么在自己家网站做直播骏域网站建设专家东莞
  • 大连金州代做网站公众号未备案的网站 访问 hots
  • 站长查询工具应用商店官方下载
  • 青州网站制作哪家好装饰工程施工组织设计
  • 丹东谁家做网站无锡百度正规推广
  • 湖南中耀建设集团有限公司网站服装网页设计模板图片
  • 建设工程查询网站视频号如何绑定小程序商店
  • 优质的网站如何不要钱做网站
  • wordpress动漫视频网站轻量级数据库wordpress
  • 在网上做效果图赚钱的网站洛阳做网站那家好
  • 创客贴设计网站官网wordpress 3.5.2 漏洞
  • 互联网金融网站开发众筹插件 wordpress
  • 浙江省建设协会网站首页免费网络电话app下载
  • 购物网站seo北京微信网站建设电话咨询
  • 做网站选大公司好还是小公司网上注册公司需要多长时间
  • 高质量外链网站交换链接营销成功案例
  • 做网站 推广小程序源码大全
  • 做购物网站怎么赚钱做任务拿赏金的网站
  • 电子商城开发网站建设网站建设与会展
  • 图书馆新生专栏网站建设找做网站的上什么app
  • 抖音评论点赞自助网站石家庄建筑网
  • 手机记事本做网站广东新闻联播今天
  • 网站建设好找工作吗营销策划书范文1000字
  • 香奈儿网站建设策划书赣州网站建设精英
  • wordpress个人站主题php 手机网站
  • 网站平台建设咨询合同天津seo优化
  • 绵阳网站建设价格培训班有哪些
  • 工业设计ai软件郑州seo优化外包顾问
  • 江门网站推广哪里专业国际化网站
  • 像美团这种网站怎么做的个人新闻类网站模板免费下载