Spring学习笔记——概念,优缺点,体系结构

Spring

参考学习网址: Spring框架教程(非常详细)

Spring概念和作用

Spring framework 就是我们平时说的 Spring 框架,Spring 是目前主流的 Java Web 开发框架,该框架是一个轻量级的开源框架,其目的是用于简化企业级应用程序开发的难度和周期。以IOC(控制反转)和AOP(面向切面编程)为内核。

当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的实例(例如,使用 new 关键字获得被调用者实例),而使用 Spring 框架后,被调用者的实例不再由调用者创建,而是由 Spring 容器创建,这称为控制反转。

Spring 容器在创建被调用者的实例时,会自动将调用者需要的对象实例注入给调用者,调用者通过 Spring 容器获得被调用者实例,这称为依赖注入。

控制反转是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是loC容器,其实现方法是依赖注入(Dependency Injection,DI)。

AOP(Aspect-Oriented Programming,面向方面编程),通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离。从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率

IOC指将对象的创建权交给Spring去创建。AOP用来封装多个类的公共行为,将与业务无关,却被业务模块共同调用的逻辑封装起来,减少系统的重复代码。减低模块之间的耦合度。

Spring特点:

  • 方便解耦,简化开发:将所有的对象的创建和依赖关系的维护交给Spring管理。

  • 方便集成各种优秀的框架:Spring不排斥各种优秀的框架,其内部提供了对各种优秀框架的直接支持。

  • 降低javaEE API的使用难度:Spring对java EE开发中非常难用的一些API(如JDBC,JavaMail,远程调用等)都提供了封装,以降低API的使用难度。

  • 方便程序的测试:Spring支持JUnit4,可以方便通过注解来测试程序。

  • AOP编程的支持:Spring提供面向切面编程,可以方便的实现对程序进行权限拦截和运行监控等功能。

  • 声明式事务的支持:Spring只需要通过配置就可以完成对事务的管理无须手动编程。

Spring的优缺点

优点:

  1. 非侵入式设计,使应用程序的代码对框架依赖最小化

  2. 方便解耦,简化开发

  3. 支持AOP编程

  4. 支持声明式事务

  5. 方便程序测试

  6. 方便集成各种优秀的框架

  7. 降低了Java EE API的使用难度

缺点:

  1. jap中需要写很多代码,控制器过于灵活,缺少一个公用控制器

  2. Spring不支持分布式

  3. 使用大量的反射机制,反射机制比较占内存

Spring体系结构

Spring学习笔记——概念,优缺点,体系结构_第1张图片

Data Access/Integration(数据访问/集成):JDBC模块实现对数据库的连接,ORM模块实现“对象-关系”映射框架无缝集成,OXM框架实现Object/XML映射的抽象层,JMS模块实现java消息,异步通信。Transactions事务模块,支持编程和声明式事务管理。

Web模块

Spring 的 Web 层包括 Web、Servlet、WebSocket 和 Portlet 组件,具体介绍如下。

  • Web 模块:提供了基本的 Web 开发集成特性,例如多文件上传功能、使用的 Servlet 监听器的 IOC 容器初始化以及 Web 应用上下文。

  • Servlet 模块:提供了一个 Spring MVC Web 框架实现。Spring MVC 框架提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的 JSP 标签,完全无缝与 Spring 其他技术协作。

  • WebSocket 模块:提供了简单的接口,用户只要实现响应的接口就可以快速的搭建 WebSocket Server,从而实现双向通讯。

  • Portlet 模块:提供了在 Portlet 环境中使用 MVC 实现,类似 Web-Servlet 模块的功能。

    Core Container(Spring的核心容器)

  • Beans 模块:提供了框架的基础部分,包括控制反转和依赖注入。

  • Core 核心模块:封装了 Spring 框架的底层部分,包括资源访问、类型转换及一些常用工具类。

  • Context 上下文模块:建立在 Core 和 Beans 模块的基础之上,集成 Beans 模块功能并添加资源绑定、数据验证、国际化、Java EE 支持、容器生命周期、事件传播等。ApplicationContext 接口是上下文模块的焦点。

  • SpEL 模块:提供了强大的表达式语言支持,支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从 Spring 容器获取 Bean,它也支持列表投影、选择和一般的列表聚合等。

AOP、Aspects、Instrumentation和Messaging

  • AOP 模块:提供了面向切面编程实现,提供比如日志记录、权限控制、性能统计等通用功能和业务逻辑分离的技术,并且能动态的把这些功能添加到需要的代码中,这样各司其职,降低业务逻辑和通用功能的耦合。

  • Aspects 模块:提供与 AspectJ 的集成,是一个功能强大且成熟的面向切面编程(AOP)框架。

  • Instrumentation 模块:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。

  • messaging 模块:Spring 4.0 以后新增了消息(Spring-messaging)模块,该模块提供了对消息传递体系结构和协议的支持

Test模块:

Test 模块:Spring 支持 Junit 和 TestNG 测试框架,而且还额外提供了一些基于 Spring 的测试功能,比如在测试 Web 框架时,模拟 Http 请求的功能。

你可能感兴趣的:(Spring,java,spring)