- spring是一个分层架构 .框架本身包含了很多个模块 , 其核心就是提供一种新的机制管理业务对象及其依赖关系
- spring框架的优点
- IOC降低了组件之间的耦合度,实现软件各层之间的解耦合 .
- 可以使用容器提供众多的服务 , 例如: 事务管理,消息服务等.
- 容器本身提供了单例模式支持.不需要开发人员自己去实现
- 容器提供了AOP技术,利用它很容易实现如控制拦截,运行期监控,横向事务扩展等功能需求
- 提供了众多的辅助类,如:jdbcTemplate,hibernatetemplate等
- spring对主流框架提供了集成支持,如hibernate/Struts,mybaties,JPA.使得开发的过程更加简便
- spring框架的核心是IOC(控制反转)和AOP(aspact orienred programming即面向切面编程)
- IOC与DI(依赖注入)的关系
- IOC是控制反转后,对象的依赖关系由spring容器完成依赖注入
- DI是把目标需要的对象或者类提供给该目标
- 两者实际上是同一事物的两种不同的角度
![]()
- spring框架包含了很多的模块,如上图总结一下可以划分为以下几部分
- Core Container(核心容器)
- Core Container包含有Core ,Beans , Context和Expression Language模块..其中Core和Beans模块是框架的基础部分,提供了IOC和DI特性(主要功能业务是在Beans模块中实现的) .这里使用到的基础类是BeanFactory, 它提供对于factory(工厂模式)的经典实现来消除对于程序中单例模式的需要,并且真正的允许你从程序逻辑中分离出依赖关系和配置.详细如下:
- Core即核心 , 该模块主要包含了spring框架的基本的核心工具类,spring框架的其他组件都要使用到这个包里的类 ,. 可以说 , Core模块是整个spring框架的基本核心.
- Beans模块是所有应用都要用到的, 它包含了访问配置文件,创建和管理bean以及进行IOC/DI操作相关的所有类
- Context模块是基于Core和Beans模块构建的,提供了一些类似于JNDI注册器的框架式的访问方法.该模块继承了 Beans模块的特性.为spring核心功能提供了大量扩展,添加了对国际化(如资源绑定).事务传播,资源加载和对Context的透明性创建的支持.同时也提供了对J2EE的如EJB,JMX和基础的远程处理的支持. 该模块的关键是ApplicationContext接口
- Expression Language 模块提供了一些表达式语言用于在运行时查询和操纵对象 . 它是JSP2.1规范的unifed expression language的一个扩展 . 该语言支持设置/获取熟悉值及属性的分配,方法的调用,访问数组上下文,容器和索引,逻辑和算术运算符,,命名变量以及从IOC容器中根据名称检索对象.改语言本身也支持对list集合的投影,选择和一般的list集合.
- springboot框架的默认前端末班thymelead就是该语言的扩展前端框架.因为springboot框架本身就是基于spring框架进行优化开发的.
- Data Access/Integration(数据处理)
- 该层包含有JDBC(数据库),ORM(对象关系映射),OXM(XML映射解析),JMS和Transaction模块 . 基本介绍如下:
- JDBC:该模块提供了对于spring对于JDBC数据库访问封装的所有类,它消除和开发中连接数据库的JDBC编码并解析了各种数据库厂商特有的错误代码
- ORM:对象关系映射,为流行的对象关系映射API,如JPA,JDO,Hibernate,ibaties等,利用该包,可以使用所有spring提供的特性进行O/R映射,如简单的声明式事务管理。spring框架本身封装了多个ORM包,包括:JDO,hibernate和ibatiesSQL MAP等。 这些都遵循spring提供的通用事务和DAO异常层次结构。
- OXM:提供了对 对象--XML映射实现的抽象层 , 包括:JAXB(https://en.wikipedia.org/wiki/Java_Architecture_for_XML_Binding), Caster(https://baike.baidu.com/item/Castor/1201102?fr=aladdin) , XMLBeans和XStream.
- JMS: JAVA MESSAGE SERVICE: 主要包含了一些制造和消费消息的特性。
- TransAction模块支持编程和声明性的事务管理。这些事务类必须实现特定的接口其,并且对所有的POJO(普通Java类)都适用。
- Web
- web上下文建立在应用程序的上下文的基础上,为基于web的应用程序提供了上下文服务。基于该模块使得spring提供了与Jakata Struts的集成。还简化了处理多部份请求以及将请求参数绑定到域对象的工作。
- web模块: 提供了基础的面向web的集成特性。如:多文件上传,使用servlet listeners监听器初化IOC及一个web应用的上下文,还包括了spring中远程支持的相关部分
- web-servlet模块: web.servlet.jar。该模块包含了spring对MVC的实现,springMVC框架使得模型范围内的代码和web forms之间能够清楚的分离开,并与spring其他特性兼容
- web-strus:提供了spring对strus框架的支持逻辑,使得类在spring中得以与struts web层集成在一起。
- web-porlet:提供了用于Prelet环境和web-servlet模块的MVC实现
- AOP
- 即面向切面编程,该模块提供了一个符合AOP标准的实现,使得在项目开发中可以自定义拦截器和切点,从而将逻辑代码分开,降低耦合度。通过该模块,可以在不使用EJB组件的情况下将声明式事务管理集成到应用程序中。
- Aspact模块提供了对AspactJ的集成支持.
posted @
2019-04-07 23:44
每天学习1点点
阅读(
36)
评论()
收藏
举报