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 应用程序的全功 ...
随机推荐
- WordCount (Python)
Github项目地址:https://github.com/w1036933220/WordCount 一.解题思路 把项目需求理清楚,画一个思维导图 考虑各部分功能所需要的大概实现思路 然后完成了计 ...
- Jupyter Notebook 入门指南
https://www.jianshu.com/p/061c6e5c4b0d cmd输入 :jupyter notebook
- 微信商户H5支付申请不通过被驳回解法,拒绝提示:网站有不实内容或不安全信息
H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付.主要用于触屏版的手机浏览器请求微信支付的场景.可以方便从外部浏览器唤起 ...
- 区块链入门到实战(38)之Solidity – 条件语句
Solidity支持条件语句,让程序可以根据条件执行不同的操作.条件语句包括: if if...else if...else if 语法 if (条件表达式) { 被执行语句(如果条件为真) } 示例 ...
- Lombok插件有望被Intellij IDEA收编以改善兼容性问题
1. 前言 最近两个版本的Intellij IDEA没有办法使用lombok插件了,这种问题已经出现了多次,导致胖哥依然使用2020.1的旧版本.其实很多人和我一样也回滚到了旧版本.我一直认为是lom ...
- Windows五次Shift漏洞
本文首发于我的个人博客. 在小破站上看到了一个关于Windows五次shift的视频,觉得很有意思,就像拿来复现一下试试.原视频是在Window7虚拟机上进行的,由于现在基本上都已经用Win10了,我 ...
- python+requests+unittest执行自动化接口测试
1.安装requests.xlrd.json.unittest库 <1>pip 命令安装: pip install requestspip install xlrdpip install ...
- AD18 PCB中添加中文字符串显示乱码问题解决
该问题是由于字符串的自体类型设置问题,AD默认是[stroke],我们点击[TrueType]即可正常显示.PS:AD18搞啥呢,默认显示输入内容不行吗,找半天!!!
- Android开发之第三方推送JPush极光推送知识点详解 学会集成第三方SDK推送
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 下面是一些知识点介绍,后期将会带领大家进行代码实战: 一.Android实现推送方式解决方案: 1.推 ...
- eclipse 设置默认编码为Utf-8 详细教程。
需要设置的几处地方为: Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8 Window ...