Spring学习笔记1_Spring的概述

本章目录

Spring学习笔记1_Spring的概述

1.Spring介绍 2.Spring作用 3.Spring起源 4.Spring体系结构 5.Spring的有点

1.Spring 介绍

Spring 是一个开源框架,Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 创建。简单来说,Spring 是一个分层的 JavaSE/EEfull-stack(一站式) 轻量级开源框架。

2.Spring 作用

Spring 致力于提供一种方法管理你的业务对象。

Spring 的主要目的是使 JavaEE 易用和促进好编程习惯。

Spring 致力于 J2EE 应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说 Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring 并不想取代那些已有的框架,而是与它们无缝地整合。

3.Spring 起源

Spring 的出现是为了取代 EJB(Enterprise JavaBean)的臃肿、低效、脱离现实的特点。

传统 J2EE 应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致 J2EE的应用没有真正实现 Write Once 及 Run Anywhere 的承诺。Spring 作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务、事务处理等。

4.Spring 体系结构

Spring 框架是一个分层架构,,它包含一系列的功能要素并被分为大约 20 个模块。这些模块分为 Core Container、Data Access/Integration、Web、AOP(Aspect Oriented Programming)、Instrumentation 和测试部分,如下图所示:

核心容器(Core Container)

1:Core 和 Beans 模块提供了 Spring 最基础的功能,提供 IoC 和依赖注入特性。这里的基础概念是 BeanFactory,它提供对 Factory 模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。

2:Context 模块基于 Core 和 Beans 来构建,它提供了用一种框架风格的方式来访问对象,有些像 JNDI 注册表。Context 封装包继承了 beans 包的功能,还增加了国际化(I18N),事件传播,资源装载,以及透明创建上下文,例如通过 servlet 容器,以及对大量 JavaEE 特性的支持,如 EJB、JMX。核心接口是 ApplicationContext。

3:Expression Language,表达式语言模块,提供了在运行期间查询和操作对象图的强大能力。支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从 Spring 容器获取 Bean,它也支持列表投影、选择和一般的列表聚合等。

数据访问/ 集成部分(Data Access/Integration)

1:JDBC 模块,提供对 JDBC 的抽象,它可消除冗长的 JDBC 编码和解析数据库厂商特有的错误代码。

2:ORM 模块,提供了常用的"对象/关系"映射 API 的集成层。 其中包括 JPA、JDO、Hibernate和 iBatis 。利用 ORM 封装包,可以混合使用所有 Spring 提供的特性进行"对象/关系"映射,如简单声明性 事务管理 。

3:OXM 模块,提供一个支持 Object 和 XML 进行映射的抽象层,其中包括 JAXB、Castor、XMLBeans、JiBX 和 XStream。

4:JMS 模块,提供一套"消息生产者、消费者"模板用于更加简单的使用 JMS,JMS 用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

5:Transaction 模块,支持程序通过简单声明性 事务管理,只要是 Spring 管理对象都能得到Spring 管理事务的好处,即使是 POJO,也可以为他们提供事务。

Web

1:Web-Socket 模块, WebSocket protocol 是 HTML5 一种新的协议。它实现了浏览器与服务器全双工通信,spring 支持 webSocket 通信。

2:Web 模块,提供了基础的 web 功能。例如多文件上传、集成 IoC 容器、远程过程访问、以及 Web Service 支持,并提供一个 RestTemplate 类来提供方便的 Restful services 访问

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

4:Web-Portlet 模块,提供了在 Portlet 环境下的 MVC 实现

AOP

1:AOP 模块,提供了符合 AOP 联盟规范的面向方面的编程实现,让你可以定义如方法拦截器和切入点,从逻辑上讲,可以减弱代码的功能耦合,清晰的被分离开。而且,利用源码级的元数据功能,还可以将各种行为信息合并到你的代码中 。

2:Aspects 模块,提供了对 AspectJ 的集成。

3:Instrumentation 模块, 提供一些类级的工具支持和 ClassLoader 级的实现,可以在一些特定的应用服务器中使用

Test

1:Test 模块,提供对使用 JUnit 和 TestNG 来测试 Spring 组件的支持,它提供一致的ApplicationContexts 并缓存这些上下文,它还能提供一些 mock 对象,使得你可以独立的测试代码。

5.Spring 优点

方便解耦,简化开发

Spring 就是一个大工厂,可以将所有对象创建和依赖关系维护,交给 Spring 管理

AOP 编程的支持

Spring 提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能

声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无需手动编程

方便程序的测试

Spring 对 Junit4 支持,可以通过注解方便的测试 Spring 程序

方便集成各种优秀框架

Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz 等)的直接支持

降低 JavaEE API 的使用难度

Spring 对 JavaEE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等),都提供了封装,使这些 API 应用难度大大降低

原文发布于微信公众号 - java学习(javaxxf)

原文发表时间:2018-04-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程微刊

vue踩坑-Error: listen EADDRNOTAVAIL 192.168.1.122:8081

每天上班,重启电脑,按照下面的步骤,打开vue的项目,开始编写代码,但是,今天一如往常一般操作: 1:cd /项目名称 下面就是运行项目了,cd /项目名称...

4523
来自专栏玩转JavaEE

使用Spring Cloud搭建服务注册中心

我们在之前的博客中已经介绍过阿里的分布式服务框架dubbo【Linux上安装Zookeeper以及一些注意事项】【一个简单的案例带你入门Dubbo分布式框架】,...

2.3K4
来自专栏Android先生

Android Binder面试详解

目前linux支持的IPC包括传统的管道、System V IPC、即消息队列/共享内存/信号量,以及socket中只有socket支持Client-Serve...

1611
来自专栏Java职业技术分享

Spring Boot 面试题精华

Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家.

1.8K4
来自专栏恰童鞋骚年

.NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置

  在分布式系统中,每一个功能模块都能拆分成一个独立的服务,一次请求的完成,可能会调用很多个服务协调来完成,为了方便服务配置文件统一管理,更易于部署、维护,所以...

2164
来自专栏专注研发

jetty服务器原理与maven集成

https://www.ibm.com/developerworks/cn/java/j-lo-jetty/

1903
来自专栏Java Web

Spring MVC【入门】就这一篇!

MVC 设计概述 在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Mod...

4258
来自专栏IT笔记

SpringBoot开发案例之奇技淫巧

程序员都有着一种天生的好奇心,这种好奇心引导着我们的编程生涯。写几行代码,装载到计算机里,让它按照你的思路工作,这是非常有趣的事情。但随着开发的东西越来越多,我...

1.2K10
来自专栏微信公众号:Java团长

初识Spring Boot框架

前面的铺垫文章已经写了几篇了,主要是介绍了Spring和SpringMVC框架,小伙伴们在学习的过程中大概也发现了这两个框架需要我们手动配置的地方非常多,不过做...

1144
来自专栏Java 源码分析

SpringBoot 笔记 ( 一 ):启动流程

SpringBoot 笔记(一): 启动流程 1. 配置开发环境 1. 创建 Maven 项目 然后我们首先在项目里面加上编译环境,防止每一次更新 Maven ...

3104

扫码关注云+社区

领取腾讯云代金券