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 应用程序的全功 ...
随机推荐
- 在服务器上使用python-gym出现的显示问题
参考链接: http://www.luyixian.cn/news_show_392045.aspx https://www.cnblogs.com/cenariusxz/p/12666938.htm ...
- ondyari / FaceForensics配置指南
https://github.com/ondyari/FaceForensics 安装配置方法: $ git clone https://github.com/ondyari/FaceForensic ...
- Intelligence Beyond the Edge: Inference on Intermittent Embedded Systems
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 以下是对本文关键部分的摘抄翻译,详情请参见原文. Abstract 能量收集技术为未来的物联网应用提供了一个很有前景的平台.然而,由于这些 ...
- KNN手写数字识别
import numpy as np import matplotlib .pyplot as plt from sklearn.neighbors import KNeighborsClassifi ...
- 每日一学-python calendar
python模块之calendar方法详细介绍 1.首先我们看下calendar的内置函数和相关的属性: import calendar dir(calendar) ['Calendar', 'EPO ...
- JavaScript中pipe实战
JavaScript中pipe原理 代码示例 const pipe = (...fns) => x => fns.reduce((y, f) => f(y), x); 原理 一行代码 ...
- 大数据计算的基石——MapReduce
MapReduce Google File System提供了大数据存储的方案,这也为后来HDFS提供了理论依据,但是在大数据存储之上的大数据计算则不得不提到MapReduce. 虽然现在通过框架的不 ...
- oracle坑。
char(2)的,后面的有一个空格.删不掉.在plsql里可以正常查.写死的sql在程序也可以正常查. 程序用占位符的形式,不能查出来.只能转成to_number select t.*,t.rowid ...
- android MVVM(2)用数据绑定关联VM 与 V
1.官方文档 https://developer.android.com/topic/libraries/data-binding/architecture 2.简介 数据绑定库 可与MVVM 架构组 ...
- light Map
Unity5中lightmap的坑 http://blog.csdn.net/langresser_king/article/details/48914901 Unity中光照贴图一二坑及解决办法 h ...