1、Spring简介

1、Spring是什么?

Spring是一套用于开发J2EE应用程序的轻量级框架,其两大核心是IOC和AOP,也就是提供一个bean统一管理容器,提供面向切面编程的基础。

2、为什么要用Spring?

1)使用Spring肯定是为了简化开发,实现产品的快速迭代;

2)使用Spring可以使得应用程序各个模块间高内聚、低耦合,提高了行用的扩展性,便于维护;

3)使用Spring可以使得开发人员将精力更多的放到业务上;

4)Spring可以很轻松的集成其他框架,丰富底层架构的功能,进一步提高工作效率。

3、Spring有什么优点?

1)低侵入式设计,代码污染极低;

2)独立于各种应用服务器;

3)Spring的DI(依赖注入)机制降低了业务对象替换的复杂性,提高了组件之间的解耦;

4)Spring的AOP(面向切面)支持允许将一些通用任务如安全、事务、日志等进行集中式管理,从而提供了更好的复用;

5)Spring的ORM和DAO提供了与第三方持久层框架的良好整合,并简化了底层的数据库访问;

6)Spring并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。

4、Spring的基本组件

组成Spring框架的每个模块(或组件)都可以单独使用,或者与其他一个或多个模块联合实现。每个模块的功能如下:

1)核心容器:核心容器提供 Spring 框架的基本功能(Spring Core)。

核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

2)Spring 上下文:Spring 上下文是一个配置文件,向 Spring框架提供上下文信息。

Spring 上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。

3)Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。

Spring 框架管理的任何对象支持AOP。

Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

4)Spring DAO:JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。

异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。

5)Spring ORM:Spring 框架插入了若干个ORM框架,从而提供了 ORM 的对象关系工具。

其中包括JDO、Hibernate和iBatisSQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

6)Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。

所以,Spring框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

7)Spring MVC 框架:MVC框架是一个全功能的构建 Web应用程序的 MVC 实现。

通过策略接口,MVC框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

模型由javabean构成,存放于Map;视图是一个接口,负责显示模型;控制器表示逻辑代码,是Controller的实现。

Spring框架的功能可以用在任何J2EE服务器中,大多数功能也适用于不受管理的环境。

Spring 的核心要点是:支持不绑定到特定 J2EE服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE 环境(Web 或EJB)、独立应用程序、测试环境之间重用。

5、总结

Spring是一个轻量级的企业级框架,提供ioc容器、aop实现、dao/orm支持、web集成等功能。

依赖注入让组件之间以配置文件的形式组织在一起,而不是以硬编码的方式耦合在一起。

spring配置文件是完成装配的的主要场所,常用节点包括<bean>及其子节点<property>。

aop的目的是从系统中分离出切面,独立于事务逻辑实现,在程序执行时植入程序中运行。

配置aop主要使用aop命名空间下的元素完成,可以实现定义切入点和植入增强等操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深搜】骑士游历(ssl 1277)

骑士游历 Description 如下图所示有m*n(n,m<15)一个棋盘&#xff0c;在棋盘左下角的A&#xff08;1,1&#xff09;点&#xff0c;有一个中国象棋〈马〉&#xff0c;并约定马走的规则&#xff1a; ①走日字&#xff1b;②只能向右走。 Sample Input &#xff19; &…

P6015-[CSGRound3]游戏【树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P6015?contestId25945 题目大意 nnn张牌&#xff0c;玩家111从顶拿若干张&#xff0c;之后玩家222拿若干张。 若牌的和大于KKK那么分数为0否则为牌的和。 求KKK为多少时玩家111必胜。 解题思路 我们枚举玩家111拿多少张&a…

修复迁移后Net Standard项目中的错误

接上一章&#xff0c;项目编译结果如下&#xff1a;解决依赖dll引用在Net Framework项目的引用如下&#xff1a;各引用和作用&#xff1a;log4net(1.10.0.0) 用于写框架日志Castle.DynamicProxy(1.1.5.1) 用于代理类生成Micosoft.Practice.EnterpiseLibrary 微软企业库&#xf…

【深搜】骑士游历(二)

骑士游历&#xff08;二&#xff09; 问题描述&#xff1a;设有一个nn的棋盘&#xff08;n≤10&#xff09;&#xff0c;在棋盘上的任意一点A(x,y)有一中国象棋<马>,<马>走的规则同前&#xff0c;但取消<马>只能向右走的条件。试找出一条路径&#xff0c;使…

P3449-[POI2006]PAL-Palindromes【结论题,字符串hash】

正题 题目链接:https://www.luogu.com.cn/problem/P3449 题目大意 nnn个回文串&#xff0c;求有多少对回文串有序拼接可以形成一个新的回文串。 解题思路 结论:当两个回文串的最短循环节相同时两个拼接起来就是一个新的回文串。 这里感性证明一下&#xff1a; 若两个回文串…

迁移Net项目为Net Core\Standard项目

背景&#xff1a;我们公司内部有自己ORM开发框架&#xff0c;最新因为需要将系统迁移到国产服务器上&#xff0c;所以首先需要将最基础的ORM框架改造可以运行在国产服务器上。对于我们Net来说&#xff0c;优选Net Core。在迁移的过程中&#xff0c;将一些经验和坑记录下来&…

2-sat模板- 输出可行解

自己写的代码 using namespace std; const int maxn 1e6; int head[maxn]; int DFN[maxn],LOW[maxn],stk[maxn],visit[maxn],belong[maxn]; vector<int> scc[maxn]; int tot,idx,cnt,sccnum; int n,color[maxn],degree[maxn],pos[maxn]; struct Es{ int v; int next; in…

读从电子到产品

1、用户的量不重要&#xff0c;质更重要&#xff0c;要让用户真正跟你的产品产生很强大的关系&#xff0c;要看解决问是不是够好、够快、够准&#xff0c;在解决问题的时候&#xff0c;要保证产品真正能满足用户的需求。 2、你认为的问题&#xff0c;别人未必觉得是问题&#…

迁移后的Net Standard版本的类库测试和多平台项目实测

按照第一步的方法&#xff0c;添加一个Net Core的MSTest项目&#xff0c;然后将原来的测试项目下的代码迁移到新测试 项目中&#xff0c;然后引用新的Beyondbit.Framework Core类库。然后运行单元测试项目和集成测试项目即可。测试当中单元测试下项目没有问题&#xff0c;一遍就…

【深搜】01串

01串 Description 用n个0和n个1排成一个2n位的二进制数,要求从最高位起到任意一位,0的个数不能少于1的个数。编程求出所有符合条件的2n位二进制数。 如n&#xff13;时&#xff0c;符合条件的共有5个&#xff1a; &#xff10;&#xff10;&#xff10;&#xff11;&#x…

poj3648 Wedding 2-sat

题目链接&#xff1a; 题目 建图&#xff1a; 1.新娘向新郎连边&#xff0c;表示选取的时候选取新娘对面的。 2. 有奸情的人比如是 xh yh那么连边(x,yn)以及(y,xn) 如果是xh yw 那么连边(x,y) 以及 (yn,x) 如果是xw yh 那么连边(xn,yn)以及(y,x) 如果是xw yw那么连边(x…

P3573-[POI2014]RAJ-Rally【拓扑排序,二分+树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P3573 题目大意 nnn个点mmm条边的DAGDAGDAG&#xff0c;删掉一个点使得最长路最短。 解题思路 先跑一遍拓扑排序 dsids_idsi​表示以iii结尾的最长路&#xff0c;dtidt_idti​表示以iii开头的最长路&#xff0c;用拓扑序dp可…

读上瘾-让用户养成习惯

1、凡是成功的创新都有一个共性&#xff1a;能够解决问题&#xff0c;看似明确&#xff0c;实则复杂&#xff0c;因为人们总是对新产品应该解决何种问题各执一词。 3、产品不只是满足功能&#xff0c;还要反映人性。好的产品是一件作品&#xff0c;好的技术几近于艺术&#xf…

.Net Core小技巧 - 使用Swagger上传文件

前言随着前后端分离开发模式的普及&#xff0c;后端人员更多是编写服务端API接口。调用接口实现文件上传是一个常见的功能&#xff0c;同时也需要一个选择文件上传的界面&#xff0c;可以编写前端界面上传&#xff0c;可以使用Postman、curl来模拟上传请求。上述的方式多多少少…

【动态规划】数字金字塔

数字金字塔 Description 考虑在下面被显示的数字金字塔。 写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大。 每一步可以走到左下方的点也可以到达右下方的点。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径…

读极致产品

1、极致产品 用户的痛点&#xff0c;项目的需求是什么&#xff1f;准确吗&#xff1f;是不是真需求&#xff1f;如何抓住用户的真需求&#xff0c;如何深入用户需求做产品。要站在用户的角度思考问题&#xff0c;了解用户的刚需、痛点。商业的本质是让人性得到释放&#xff0c;…

P4555-[国家集训队]最长双回文串【Manacher】

正题 题目链接:https://www.luogu.com.cn/problem/P4555 题目大意 长度为nnn的串&#xff0c;双回文串的定义是两个连续的回文串&#xff0c;求最长的双回文串。 解题思路 我们用马拉车维护pip_ipi​的时候维护一个lil_ili​和rir_iri​。 li:l_i:li​:以iii开头的最长回文串…

容器化分布式日志组件ExceptionLess的Angular前端UI

写在前面随着微服务架构的流行&#xff0c;日志也需要由专门的分布式日志组件来完成这个工作&#xff0c;我们项目使用的是 ExceptionLess 这个组件&#xff0c;它是前后端分离的&#xff1b;这篇文章我们就来实践容器化 ExceptionLess 的前端&#xff0c;并为其包含一个 nginx…

读人人都是产品经理__1

1、产品经理 设计产品的一大准则就是无需阅读说明书就能上手&#xff0c;如何让用户用起来更加省心是产品改进的方向&#xff0c;产品就是用来解决某个问题的东西&#xff0c;产品可以是有形的实物&#xff0c;也可以是无形的服务。只有能解决问题&#xff0c;产品才能有价值。…

【动态规划】最小代价问题

最小代价问题 Description 设有一个nm(小于100)的方格&#xff08;如图所示&#xff09;&#xff0c;在方格中去掉某些点&#xff0c;方格中的数字代表距离&#xff08;为小于100的数&#xff0c;如果为0表示去掉的点&#xff09;&#xff0c;试找出一条从A(左上角)到B&#…