Spring Framework--ApplicationComtext(1)简介

前言

​ 哈哈?是不是很久没写博文了?总是各种原因(liyou)导致不写博文。废话不多说,骚年还是学习吧。

1 概述

​ Spring这个东西可真大啊,总共将近20个组件,但是知乎大神们告诉我,其中比较核心的组件只有core,context和beans。aop,web等都属于核心上层的特性功能。为了适应时代的变化,社会的发展,最近打算就先从context入手,而这里面,我们又不得不提ApplicationContext。

​ 注:以发文日期最新版github上spring源码为基础进行阅读,版本号,后期加上。

git地址:

https://github.com/spring-projects/spring-framework.git

1.1 IOC(控制反转)

​ 实际应用的程序基本上都是由多个类彼此合作来实现业务逻辑,这使得每个对象都需要与其合作的对象的引用。但是这样的控制就导致了程序的耦合度非常大,不易于复用,更不易于做单元测试。
Martin Flowler 提出了“那些方面的控制被反转了?”这个问题。他得出的结论是:依赖对象的获得被反转了。基于这个结论,他为控制反转创造了一个更好的名字:依赖注入。

依赖倒置原则:

  • 高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
    • 抽象不应该依赖于具体实现,具体实现应该依赖于抽象。

依赖倒置也是设计模式六大原则之一。在Spring中IoC容器就是这个模式的载体,它可以通过容器对对象进行管理,在对象生成或初始化时直接将数据注入到需要其依赖的对象中。

1.2 ApplicationContext

​ Spring中容器要分两类,一类是实现BeanFactory接口的简单容器系列,这类容器只实现了容器的最基本功能(这个还不太了解);另一个是ApplicationContext应用上下文,也就是我们最常用的,项目中的配置文件大多数都是ApplicationContext-xxx.xml,它作为容器的高级形态而存在。本文将对ApplicationContext进行阅读讲解。

​ 首先看看ApplicationContext的简略版类图:ApplicationContext继承关系简略类图

​ 再看看包含方法的接口方法的ApplicationContext类图:

ApplicationContext继承关系详细类图

​ 从上图ApplicationContext接口的继承关系可以看出,它除了容器所需的基本特性外,还有其他许多附加特性,比如国际化的消息访问、资源访问、事件传播、载入多个上下文等。

​ 在这个接口体系中,ListableBeanFactory和HierarchicalBeanFactory两个接口,连接BeanFactory接口定义和ApplicationConext应用上下文的接口定义。在ListableBeanFactory接口中,细化了许多BeanFactory的接口功能,比如定义了getBeanDefinitionNames()接口方法;对于HierarchicalBeanFactory接口,增加了getParentBeanFactory()的功能,是BeanFactory具备了双亲IoC容器的管理功能,在ConfigurableBeanFactory中主要定义了一些对BeanFactory的配置功能,比如通过setParentBeanFactory()设置双亲IoC容器,通过addBeanPostProcessor()定义了Bean后置处理器等。;对于ApplicationContext接口,它通过继承MessageSource、ResourceLoader、ApplicationEventPublisher接口,在BeanFactory简单IoC容器的基础上添加了许多对高级容器的特性的支持。总体来说 ApplicationContext 必须要完成以下几件事:

  • 标识一个应用环境
  • 利用BeanFactory 创建Bean 对象
  • 保存对象关系表
  • 能够捕获各种事件

下篇博客,将从ClassPathXmlApplicationContext线入手,对上面要做的几件事,进行详细解释。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Framework是一个开源的应用程序开发框架,4.0.0是其一个版本。Spring Framework以依赖注入(DI)和面向切面编程(AOP)为核心,旨在简化企业级Java应用程序的开发。 Spring Framework 4.0.0引入了许多新的功能和改进。首先,它提供了对Java 8的全面支持,包括对Lambda表达式和Stream API的利用。这使得开发人员可以更加轻松地使用最新的Java语言功能来编写更简洁和高效的代码。 其次,Spring Framework 4.0.0还引入了对RESTful Web服务的支持,包括内置的REST客户端和服务器。这使得开发人员可以方便地构建和消费RESTful API,从而实现更灵活和可扩展的分布式应用程序。 此外,Spring Framework 4.0.0还对Web应用程序开发进行了一些改进。它引入了基于Servlet 3.0规范的异步请求处理功能,提供了更好的可伸缩性和性能。它还提供了对HTML5以及WebSocket的支持,使得开发人员可以更容易地构建现代化的Web应用程序。 另外,Spring Framework 4.0.0还增强了缓存支持,提供了更好的性能和可配置性。它还引入了对新的NoSQL数据库的支持,如MongoDB和Redis,使得开发人员可以更方便地集成这些数据库到他们的应用程序中。 总而言之,Spring Framework 4.0.0是一个功能丰富的版本,提供了许多新的功能和改进。它使得Java开发人员能够更加高效地构建各种类型的应用程序,包括企业级应用程序、Web应用程序以及分布式应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值