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 应用程序的全功 ...
随机推荐
- Biologically Inspired Reinforcement Learning: Reward-Based Decomposition for Multi-goal Environments
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Abstract 我们提出了一种基于情绪的分层强化学习(HRL)算法,用于具有多种奖励来源的环境.该系统的架构受到大脑神经生物学的启发,特 ...
- Shell编程—结构化命令
1使用if-then语句 f-then语句有如下格式. if command then commands fi bash shell的if语句会运行if后面的那个命令.如果该命令的退出状态码是0(该命 ...
- muduo源码解析7-countdownlatch类
countdownlatch class countdownlatch:noncopyable { }; 作用: countdownlatch和mutex,condition一样,用于线程之间的同步, ...
- Win 10 蓝屏,出现DRIVER_POWER_STATE_FAILURE的解决方法
笔者个人笔记本电脑,用的是华硕的飞行堡垒FZ系列,上个月装了个Ubuntu的系统,之后换回Windows后,电脑疯狂蓝屏,错误代码只有这个DRIVER_POWER_STATE_FAILURE.一开始我 ...
- 焦大:seo该研究用户需求还是搜索算法
http://www.wocaoseo.com/thread-62-1-1.html 上一篇博客我写了用户需求点是做seo排名最首要关注的东西,其实这个我在以前也一直说的,seo有两大核心,一个是检索 ...
- Qt setMouseTracking使用
Qt setMouseTracking使用(转载) bool mouseTracking 这个属性保存的是窗口部件跟踪鼠标是否生效. 如果鼠标跟踪失效(默认),当鼠标被移动的时候只有在至少一个鼠标 ...
- Python协程之asyncio
asyncio 是 Python 中的异步IO库,用来编写并发协程,适用于IO阻塞且需要大量并发的场景,例如爬虫.文件读写. asyncio 在 Python3.4 被引入,经过几个版本的迭代,特性. ...
- .Net Task 异步执行不等待结果返回
该文章适合有一定异步编程基础的童鞋 开始之前先看.NET官网的一张图: 异步编程中最需弄清的是控制流是如何从方法移动到方法的. 没有理解的话可以去看一下 https://docs.microsoft. ...
- 12 props 传的是数组处理
<template> <div>InfoDetailed</div> </template> <script> export default ...
- IE9 报错 script1004缺少“;”
在IE9中不支持 let关键字,修改为var就可以了 作者:彼岸舞 时间:2020\07\31 内容关于:工作中用到的小技术 本文来源于网络,只做技术分享,一概不负任何责任