ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

轻松理解Spring框架的基本思想

2020-03-03 11:39:49  阅读:239  来源: 互联网

标签:框架 Spring 代码 业务流程 轻松 EJB JavaBean


说起Spring框架,就不得不说J2EE的EJB。年龄稍大一些的Java程序员对J2EE的EJB还是记忆犹新的,当时使用EJB开发大型应用系统非常时髦,Java程序员无不以掌握EJB开发技术为自豪,程序员引以为豪的原因是EJB的技术太复杂了,以至于一般的Java程序员很难掌握这么复杂的技术。

EJB的学习成本很高,开发效率却不高,需要编写很多重复的代码,这些问题阻止了EJB的继续发展。就在EJB技术止步不前的时候,Spring框架在合适的时机出现了,Spring框架和EJB不同,Spring框架的学习成本非常低,它是一个轻量级的开发框架,更多强调面向对象的设计,而不是让现有的技术变得更复杂,它使用JavaBean替代了复杂的EJB,并且为JavaBean提供了简单易用的应用配置框架。

一个JavaBean就是一个公共类,它可以被其它JavaBean类作为组件来使用,并且JavaBea之间的组配不需要在代码级实现,完全可以在配置层和注解层实现,Spring会自动选择相适配的JavaBean来组配运行。这种自动适配机制避免了JavaBean与使用类之间的代码耦合,提高了程序的可扩展性和维护性。

例如类A要使用类B,类B是类A的属性,如果直接在类A中创建类B,当类B因业务需要修改时,也需要修改类A的代码,这种写法就是代码耦合,也可以说类A和类B属于代码耦合。

假如我们把类B的创建交给Spring,Spring通过配置文件或者通过Java注解来创建类B,然后再由Spring把创建的类B实例和类A的实例组配起来,这样就避免了类A与类B的代码耦合。这种机制就是Spring框架的控制反转思想,相当于类A把创建类B权利交给了Spring,由Spring来控制类B的创建。

Spring框架还有一个比较重要的功能,那就是AOP机制。Spring框架的AOP机制可以把系统中的一些通用功能抽取出来,作为JavaBean来使用,与此同时在系统的业务流程代码中设置调用这些JavaBean功能的切入点,当系统业务流程执行到切入点时,Spring会自动把需要调用的JavaBean横向切入到业务流程指定的位置,AOP的这种技术也称为“横切”技术。

例如,在一个业务系统中,当用户要进入需要操作权限的页面时,系统会先进入登录页,要求用户登录系统后再进入该页面。这样的操作权限页面会有多个,如果为每个页面都写登录业务逻辑处理代码,显然是会造成代码冗余,维护起来也非常麻烦。比较好的做法是把用户登录业务处理作为一个独立的JavaBean,这个JavaBean也称为AOP的“切面”。然后在需要用户操作权限的业务流程页面设置“切入点”,并通过注解或配置文件将“切面”和“切入点”连接起来。当业务流程执行到“切入点”时,Spring框架会自动把与切入点关联的“切面”切入到业务流程“切入点”所在的位置,开始执行“切面”代码,直至切面代码执行完毕,然后根据“切面”返回的结果确定是否执行后面的流程。下图是用户登录功能切入到业务流程的示意图。

 

图1 用户登录功能切入到业务流程示意图

Spring框架还有一个最大的特征就是和现有的开发框架不是竞争关系,而是采用融合的方式将其它框架集成进来,充分利用其它框架的技术,为系统实现提供最优解决方案。SSM就是Spring框架融合了MVC框架技术和MyBatis数据库框架技术。

smilejiasmile 博客专家 发布了117 篇原创文章 · 获赞 156 · 访问量 24万+ 私信 关注

标签:框架,Spring,代码,业务流程,轻松,EJB,JavaBean
来源: https://blog.csdn.net/smilejiasmile/article/details/104620357

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有