Spring概述「建议收藏」

Spring概述「建议收藏」Spring概述

大家好,又见面了,我是你们的朋友全栈君。

一、Spring是什么

Spring是一种多层的J2EE应用程序框架,其核心就是提供一种新的机制管理业务对象及其依赖关系。在这里插入图片描述

缩写 名称
JDBC java数据库连接
ORM 对象关系映射
OXM O/XMapper即O/X映射器
JMS Java消息服务
Transaction 事物
websocket 消息队列,实时通讯
Servlet 服务连接器
Web 网络
portlet 信息系统的表示层
beans 组件
core 核心
context 上下文
SpEL Spring 表达式

Core Container

spring-core,spring-bean:spring框架最基本的部分,包括了控制反转和依赖注入.BeanFactory是工厂模式的一种精妙实现.她去除了对总的单例模式的需求,同时让你真正的程序逻辑减少了依赖的配置和规范.

spring-context:context模块构建在core和beans提供的基础之上,她是在一个框架风格的方法里获得对象的途径,就像一个JNDI(Java Naming and DirectoryInterface,Java命名和目录接口)注册一样.context模块从beans模块继承特性,另外提供国际化(比如使用资源绑定),事件传播,资源加载,或者通过一个Servlet容器创建显而易见的context等支持.context模块也支持EJB,JMX(Java Management Extensions,即Java管理扩展),基本的远程处理等JavaEE的特性.ApplicationContext是context模块的焦点.spring-context-support提供通过缓存(EhCache,Guava,JCache),邮件(JavaMail),调度(CommonJ,Quartz)和模版引擎(FreeMarker,JasperReports,Velocity)把第三方库集成到一个spring应用的上下文(context)中.

Spring-expression:她提供一个强大的表达式语言在运行时来查询和操作对象图.她是在JSP 2.1规范中指定的一种扩展的统一表达式语言(unified EL).这种语言支持对属性的获取与设置,属性的赋值,方法的调用,获取数组集合索引的内容,逻辑和算数操作,命名变量,以及从Spring的IoC容器通过名字获取对象.她也支持列表映射和选择,就像一般的列表聚合一样.

AOP and Instrumentation

Spring-aop提供一个联盟标准的面向切面编程实现,她允许你定义诸如方法拦截器和切点干净利落地减少那些应该被分到一边的功能实现代码.使用源级的元数据功能,你也可以在你的代码里合并行为信息到一个方法里,就像.NET attributes.
单独的spring-aspects模块被集成到了AspectJ里了.
Spring-instrument模块提供了class instrumentation支持和类加载器的实现来在特定的应用服务器上使用.spring-instrument-tomcat模块包含了为tomcat提供的spring仪器(instrumentation)代理.

Messaging

Spring-messaging模块是spring framework 4 包含的一个从spring集成项目(如Meaasge,MessageChannel,MessageHandler,和其他基于消息应用的基础服务)而来的关键抽象.这个模块也包括一系列的用来映射消息到方法的注解,类似于基于编程模型的springMVC注解.

Data Access/Integration

数据的获取/整合 层包括了JDBC,ORM,OXM,JMS和事务模块.
Spring-jdbc模块提供了一个JDBC抽象层来移除冗长乏味的JDBC编码和解析数据库供应商明确的错误代码.
Spring-tx模块为实现了特殊借口的类和所以有你的POJOs(Plain Old Java Objects)提供了方案和声明式事务管理.
Spring-orm模块为流行的对象关系映射APIs(包括JPA,JDO和Hibernate)提供集成层.通过使用spring-orm模块,你可以组合使用所有这些O/R mapping框架,同时使用spring提供的其他特性,比如之前提到的简单的声明式的事务管理特性.
Spring-oxm模块提供一个支持Object/XML mapping实现(比如JAXB,XMLBeans,JiBX和XStream)的抽象层.
Spring-jms模块包括生产和消费消息的特性,自从spring框架4.1,提供了和spring-messaging模块的集成.

Web

Web层由spring-web,spring-webmvc,spring-websocket,和spring-webmvc-portlet模块构成.
Spring-web模块提供面向web整合特性,比如多部件的文件上传功能和使用Servlet监听器初始化的IoC容器,和一个面向web的应用上下文.她也包括一个Http客户端和spring远程操作支持的面向web的部分.
Spring-webmvc模块(也被称作Web-Servlet模块)包括为web应用而实现的Spring’s model-view-controller(MVC) 和REST Web Services .springmvc框架在model代码域和web表单以及其他所有spring框架的特性提供了一个清晰的界限.
Spring-webmvc-portlet模块(也被称作Web-Portlet模块)提供一个被用在Portlet环境和镜像的spring-webmvc模块功能的MVC实现.

Test

Spring-test模块支持在JUnit和TestNG下的sping组件的单元测试和集成测试.她提供了Spring ApplicationContexts 加载和缓存这些上下文.你可以独立的测试你的代码通过她提供的模拟对象.

二、为什么要使用Spring

  1. 降低组件之间的耦合度,实现软件各层之间的解耦。 Controller –> Service –> DAO
  2. 可以使用容器提供的众多服务,如:事务管理服务、消息服务等等。当我们使用容器管理事务时,开发人员就不再需要手工控制事务.也不需处理复杂的事务传播。
  3. 容器提供单例模式支持,开发人员不再需要自己编写实现代码。
  4. 容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能。
  5. 容器提供的众多辅作类,使用这些类能够加快应用的开发,如: JdbcTemplate、 HibernateTemplate。
  6. Spring对于主流的应用框架提供了集成支持,如:集成mybaties,Hibernate、JPA、Struts等,这样更便于应用的开发。

三、Spring的核心及其组成

  1. 核心就是提供一种新的机制管理业务对象及其依赖关系。IoC(Inversion of Control 控制反转)/ DI (Dependency Injection依赖注入),AOP(面向切面编程)。
    1.1 IoC: Inversion of Control (控制反转) : 就是把要在程序中实例化的对象配置到文件中,在程序中不用new来产生,而是让容器通过配置文件返回一个给你,好处就是当需要更改业务逻辑时,方便替换对接口的不同实现类。
    1.2 AOP: Aspect Oriented Programming (面向切面编程) 用来在系统中提升业务的分离,把日志、安全、事务等东西和核心业务分离开,甚至核心业务都不知道它们的存在。基本实现就是对相关的方法进行拦截,添加所需的处理动作。
  2. Spring的七大组成模块
    在这里插入图片描述

四、Spring的特点

  1. 轻量级:轻量级是针对重量级容器(EJB)来说的,Spring的核心包就不到1M大小,而使用Spring的核心包所需的资源也很小,所以可以在小型设备中使用。
  2. 非入侵式:Spring目标是一个非入侵式的服务框架。原因是所有框架都是提供大量的功能供用户去使用,从而简化开发时间和成本,但由于大量的使用了框架的API,使应用程序和框架发生了大量的依赖性,无法从框架中独立出来,更加无法使程序组件在其他程序 中使用。
  3. 容器:
    3.1 Spring提供了容器功能,容器可以管理对象的生命周期、对象与对象间的关系、我们可以通过编写XML来设置对象关系和初始值,这样容器在启动之后,所有的对象都直接可以使用,不用编写任何编码来产生对象。
    3.2 Spring有两种不同的容器:
    3.2.1 Bean工厂(org.springframework.beans.factory.BeanFactory)是最简单的容器(是Spring基本的IOC容器),提供了基础的依赖注入支持
    3.2.2 应用上下文(org.springframework.context.ApplicationContext)建立在Bean工厂基础之上,提供了系统构架服务
  4. IoC / DI:
    4.1 Spring最核心的概念就是IoC(控制反转,所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。 ),而他的另一个名字就是DI(依赖注 入,所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。 )。
    4.2 使用Spring我们不必在程序中维护对象的依赖关系,只要在XML中设定,Spring容器会自已根据相关的配置去产生他们之间的关系,相当于所有的关系都是在容器运行的时候注入的,而本身他们的关系是没有的。
  5. AOP:
    5.1 Spring最被人重视的另一个方面就是对AOP的支持,其实AOP只是Spring支持的一个子容器
    5.2 AOP在一个服务流程中插入与业务逻辑无关的系统服务逻辑,如:日志、权限验证、异常处理、事务等,而把这些独立出来设计成一个对象,这样的对象称为Aspect。
  6. 持久层:Spring提供了对持久层的整合,如对JDBC的使用加以封装简化,提供事务功能,对ORM工具如Hibernate等的整合。
  7. Web框架整合:Spring也提供了Web的MVC解决方案,可以很好的善用IOC和AOP的功能,可以轻松的替换掉View层,如使用JPS,也可以使用熟悉的web容器,如struts技术与spring整合。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106644.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • navicat for mysql注册码最新_navicat怎么激活注册

    navicat for mysql注册码最新_navicat怎么激活注册NavicatforMySQL注册码navicatformysql是一种开发和管理MySQL或MariaDB数据库的最佳软件工具;用户名和组织随意写。可用的注册码:NAVB-5NCL-FEL4-MUZGNAVP-MFTB-WKYK-RMXJNAVB-KTJB-D23X-QJTDNAVI-UQW3-AYAB-ISJDNAVF-SBDU-5QE7-2WZQ#NavicatforSQ…

    2022年10月13日
  • 各类手机开发平台介绍(转载)[通俗易懂]

    各类手机开发平台介绍(转载)[通俗易懂]近来无事,把手机开发平台的学习指南、教程和资料总结一下,方便大家参考。手机客户端软件开发最大的困难就是平台不统一,手机开发平台太多。手机可分为智能手机开发和featherphone手机。开发平台可分为开放式平台和封闭式平台,开放式平台包括symbian、windowsmobile、linux、iPhone、Android、BlackBerry、j2me、brew等,支持手机应用程序通过OT…

  • 第十一讲:独立成分分析(Independent Components Analysis )

    第十一讲:独立成分分析(Independent Components Analysis )接下来我们要讲的主体是独立成分分析(IndependentComponentsAnalysis,缩写为ICA)。这个方法和主成分分析(PCA)类似,也是要找到一组新的基向量(basis)来表征(represent)样本数据。然而,这两个方法的目的是截然不同的。还是先用“鸡尾酒会问题(cocktailpartyproblem)”为例。在一个聚会场合中,有n个人同时说话,而屋子里的任意…

  • android读取sqlite数据库的数据并用listview显示

    android读取sqlite数据库的数据并用listview显示android读取sqlite数据库的数据并用listview显示刚刚接触android,老师给了我了几个班级信息的excel,让我做一个考勤的系统出来,本篇仅记录了真机调试下,读取已有静态数据库信息并显示在listview中。准备工作开发工具为AndroidStudio。sqlite可视化软件SQLiteExpertProfessional5已将excel表转化为的数据库student1………

  • 计算机组成原理知识点总结(第2篇 第3、4章)[通俗易懂]

    计算机组成原理知识点总结(第2篇 第3、4章)[通俗易懂]基于计算机组成原理(第2版)唐朔飞编著第2篇计算机系统的硬件结构 第3章系统总线总线是连接多个部件(模块)的信息传输线,是各部件共享的传输介质。在某一时刻只允许有一个部件向总线发送信息,但多个部件可以同时从总线上接收相同的信息。总线通信分为异步和同步两大类。总线的定义:为多个功能组件服务的一组公用信息线。按功能分类:地址总线、数据总线、控制总线。按连接部件不同分类:片内总线、系…

  • idea打断点调试_vs断点调试快捷键

    idea打断点调试_vs断点调试快捷键IDEA断点调试–基础篇1前言Debug用来追踪代码的运行流程。我们通常会在程序运行过程中出现异常的时候,启用Debug模式来分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。而IDEA作为我们JAVA开发最常用的工具,所以我们对于IDEA的Debug更应该去了解一下。2断点类型IDEA中对于JAVA的断点进行了分类,有如下的4类:JavaLineBreakpoints:行断

    2022年10月20日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号