Spring 框架简介

2015-11-04 16:18:26   最后更新: 2015-11-09 21:29:50   访问数量:625




上一篇日志中,我们通过一个小小的 demo,打印出了 hello world

基于 springBoot 的 Hello World

麻雀虽小,五脏俱全,通过一个小 demo 可以学习到 spring 框架的获取与构建,gradle、maven 的使用,还有 @RestController、@RequestMapping、@RequestParam、@SpringBootApplication、@PathVariable 等注解的使用,以及将对象直接转换为 json 输出

最重要的,我们走进了一个新的世界 -- spring

 

Spring 是一个开源框架,用来解决企业应用程序开发的复杂性而诞生

他的主要优势之一就是分层架构,他由七个定义良好的模块组成:

 

 

每个模块都可以单独存在或与其他一个或多个模块联合实现

  1. 核心容器 -- 核心容器的主要组件是 BeanFactory,他是 Spring 框架的基本功能,他是工厂模式实现的,使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开
  2. Sping 上下文 -- Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能
  3. Spring AOP -- 通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中
  4. Spring DAO -- JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
  5. Spring ORM -- Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构
  6. Spring Web 模块 -- Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作
  7. Spring MVC 框架 -- MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI

 

IOC 即控制反转模式(也称为依赖性注入)

用户不需要创建对象,而只是描述创建他们的方式,在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务,由 IOC 容器负责将这些联系在一起

在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,决定什么时间调用方法

 

依赖注入无需关注类的创建方式及具体使用的对象,而是有容器去注入他,这样做可以极大地降低服务的耦合程度,这样做有很多好处:

  1. 低耦合
  2. 方便地简单的更改服务
  3. 便于测试,依赖注入的接口可以直接 mock

 

spring IOC 容器设计的核心是 org.springframework.beans 包,它的设计目标是与 JavaBean 组件一起使用

 

AOP 即面向切面变成,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化

AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中

在典型的面向对象开发方式中,可能要将日志记录语句放在所有方法和 Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模块化,并以声明的方式将它们应用到需要日志的组件上

优势就是 Java 类不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用 Spring AOP 编写的应用程序代码是松散耦合的。

AOP 的功能完全集成到了 Spring 事务管理、日志和其他各种特性的上下文中。

 






技术帖      web      mvc      技术分享      java      framework      orm      spring      ioc      aop      dao     


京ICP备15018585号