spring初始(介绍、核心架构)
1、spring介绍
Spring是个java企业级应用的开源开发框架。主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
(1)spring与三层架构的关系

spring负责管理项目中的所有对象,是一个一站式的框架,容器(用来形容它用来存储单例的bean 对象这个特性)中的对象决定了spring的功能。
(2)特点
是一个开源框架
轻量级(与EJB对比),依赖资源少,消耗的资源少
(3)分层
web层:struts、SpringMVC
service层:spring
dao层:hibernate、mybatis、jdbcTemplate、springdata
spring是一个分层的一站式(每个层都提供解决方案)框架。
(4)核心
控制反转IoC和面向切面编程AOP。
(5)优点
方便解耦,简化开发(高内聚低耦合):
- Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
轻量:
- Spring是轻量的,基本的版本大约2MB
控制反转:
- Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象
面向切面的编程(AOP):
- Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开,可以方便的实现对程序进行权限拦截、运行监控等功能
容器:
- Spring包含并管理应用中对象的生命周期和配置
MVC框架:
- Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品
事务管理:
- Spring提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
声明式事务的支持:
- 只需要通过配置就可以完成对事务的管理,而无需手动编程
方便程序的测试:
- Spring对Junit4支持,可以通过注解方便的测试Spring程序。
方便集成各种优秀框架:
- Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Stmuts、Hibemate、MwBtis、Quartz等)的直接支持
降低JAVAEE API的使用难度:
- Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低
异常处理
- Spring提供方便的APl把具体技术相关的异常(比如由JDBC,HibernateorJDO抛出的)转化为一致的unchecked异常
2、spring核心架构
Spring框架主要由六个模块组成,在开发时可以根据需要选择合适的模块。

(1)核心容器模块:提供了框架的最基础部分,是其它组件的基础,提供了IoC容器、Spring框架的基础核心工具类。
- beans:管理bean
- core:核心
- context:上下文(配置文件)
- SpEL(Spring Expression Language):SpEL表达式
(2)数据访问/集成模块:减少了JDBC代码量、提供声明式事务管理的功能等。
- JDBC:JDBCTemplate
- ORM:整合Hibernate,Spring 通过提供ORM模块,支持我们在直接JDBC 之上使用一个对象/关系映射映射(ORM)工具,Spring 支持集成主流的 ORM 框架,如Hiberate,JDO 和iBATISSQLMaps。Spring 的事务管理同样支持以上所有ORM 框架及JDBC。
- Transacions:事务管理
(3)Web模块:封装了Web应用开发使用Spring框架时所需要的核心类。Spring 的WEB模块是构建在applicationcontext 模块基础之上,提供一个适合 web 应用的上下文。这个模块也包括支持多种面向web 的任务,如透明地处理多个文件上传请求和程序级请求参数的绑定到你的业务对象。它也有对JakartaStruts 的支持。
- web:web开发
(4)AOP和Instrumentation模块:Instrumentation对服务器的代理接口。
- AOP:面向切面编程,AOP 模块用于发给我们的Spring 应用做面向切面的开发,很多支持由 AOP 联盟提供,这样就确保了Spring 和其他AOP框架的共通性。这个模块将元数据编程引入Spring。
- Aspects:AOP框架
(5)Messaging模块:基于消息发送应用的基础。
(6)测试模块:对JUnit等测试框架的简单封装。
spring初始(介绍、核心架构)的更多相关文章
- Spring初始介绍
一.spring介绍 三层架构中spring位置: spring:对象的容器,相当于map容器,已经存好了相应的对象,而这三层对象(web层,service层,)进行创建时,不需要在进行new对象,s ...
- Spring Web MVC核心架构
可以查看DispatherServlet中的源代码,就是doDispatch()方法!
- 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结
http://developer.51cto.com/art/201710/554633.htm Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经 ...
- Spring Batch 中文参考文档 V3.0.6 - 1 Spring Batch介绍
1 Spring Batch介绍 企业领域中许多应用系统需要采用批处理的方式在特定环境中运行业务操作任务.这种业务作业包括自动化,大量信息的复杂操作,他们不需要人工干预,并能高效运行.这些典型作业包括 ...
- [翻译]Spring框架参考文档(V4.3.3)-第二章Spring框架介绍 2.1 2.2 翻译--2.3待继续
英文链接:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/overview.ht ...
- 一、Spring Cloud介绍
springcloud 介绍 研究了一段时间spring boot了准备向spirng cloud进发,公司架构和项目也全面拥抱了Spring Cloud.在使用了一段时间后发现Spring Clou ...
- Spring Boot 最核心的 3 个注解详解
最近面试一些 Java 开发者,他们其中有些在公司实际用过 Spring Boot, 有些是自己兴趣爱好在业余自己学习过.然而,当我问他们 Spring Boot 最核心的 3 个注解是什么,令我失望 ...
- 整合SPRING CLOUD云服务架构 - 企业分布式微服务云架构构建
整合SPRING CLOUD云服务架构 - 企业分布式微服务云架构构建 1. 介绍 Commonservice-system是一个大型分布式.微服务.面向企业的JavaEE体系快速研发平台,基于模 ...
- Spring框架介绍和原理
SpringMVC框架介绍 1) Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. Spring 框架提供了构建 Web 应用程序的全功 ...
随机推荐
- Understanding dopamine and reinforcement learning: The dopamine reward prediction error hypothesis
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract 在中脑多巴胺能神经元的研究中取得了许多最新进展.要了解这些进步以及它们之间的相互关系,需要对作为解释框架并指导正在进行的 ...
- php使用curl来获取远程图片
本文章来介绍php使用curl来获取远程图片实现方法,有需要了解采集远程图片的朋友不防进入参考. curl要求php环境支持才行. 可以运行phpinfo()函数是否支持,一般要将php.ini中;e ...
- promise的常用情况
因为js是单线程的,所以一旦代码中有报错,就不会执行下面的了,如下333就未打印 console.log(111)throw Error(222)console.log(333) 好像与promise ...
- PCIe例程理解(一)用户逻辑模块(接收)仿真分析
前言 本文从例子程序细节上(语法层面)去理解PCIe对于事物层数据的接收及解析. 参考数据手册:PG054: 例子程序有Vivado生成: 为什么将这个内容写出来? 通过写博客,可以检验自己理解了这个 ...
- Python画图库Turtle库详解篇
Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行 ...
- 特性预览:Apache 顶级项目 Apache Pulsar 2.6.1 版本
在正式分享 2.6.1 版本更新细节之前,冉小龙首先为我们分享了两个相关 PIP 的内容. 一个是 PIP-47 中关于「基于时间来进行版本更新」的计划.该 PIP 提出后,从 2.5.0 版本到目前 ...
- python3笔记-读取ini配置文件
在代码中经常会通过ini文件来配置一些常修改的配置.下面通过一个实例来看下如何写入.读取ini配置文件. 需要的配置文件是: [path] back_dir = /Users/abc/PycharmP ...
- windows-服务器-配置一个及多个-Apache-Tomcat
问题:如何在一台服务器上发布了几个Tomcat的系统???怎么配置环境变量?怎么设置Tomcat? 2020/8月更新,由于之前的java的环境变量有点绕,此次新加一个流程设计图 一.需求: 一台wi ...
- 小程序开发-组件navigator导航篇
navigator 页面链接 navigator的open-type属性 可选值 navigate.redirect.switchTab,对应于wx.navigateTo.wx.redirectTo. ...
- [业界方案] 用SOFATracer学习分布式追踪系统Opentracing
[业界方案] 用SOFATracer学习分布式追踪系统Opentracing 目录 [业界方案] 用SOFATracer学习分布式追踪系统Opentracing 0x00 摘要 0x01 缘由 &am ...