javaEE常用开源框架的认识及概述,带你深入探索Java开发世界

而我们使用框架的目的其实也很简单,就是为了提高开发的效率,而不用关心一些繁琐的、复杂的底层代码实现,从而把更多的精力用在需求的实现上。

框架能帮我们解决哪些问题

============

要明白框架能解决哪些问题,首先要知道三层架构。

三层架构分为三层:

  • 表现层:是用于展示数据的;

  • 业务层:是处理业务需求的;

  • 持久层:是和数据库交互的。

javaEE常用开源框架的认识及概述,带你深入探索Java开发世界

从这张图可看出上面列出的三个框架和三层架构所处的位置。可以看出MyBatis框架是一个持久层框架,它是和数据库交互的;而下面的Spring框架有点特殊,它不属于任何一层;SpringMVC框架是处于表现层的,它是一个表现层框架。

从这张图可大致得出,不同的框架是各司其职的,它们解决某一层或者某一类的事情。

对一些主流框架的认识

==========

由于以下具体的框架都没有学过,所以只能说一说,我对这些框架的大体认识,可能对于某些框架没用使用过和对比过很难对它的优势有深刻的认识,只能在后续的学习中,深入理解。

1、Struts2框架

Struts2框架处于三层架构的表现层,可以用来替代掉Servlet技术,来处理前端访问服务器的请求(如表单、页面提交过来的请求),所以Struts2是属于一个前端处理的框架。

下图显示了Struts2框架在三层架构中的位置:

javaEE常用开源框架的认识及概述,带你深入探索Java开发世界

对于web日常的工作,比如获取请求参数、转发、重定向、校验参数等等,使用Servlet技术基本都可以完成。既然使用Servlet技术基本都可以完成我们的需求,为什么还要使用Struts2这个框架呢?原因在于Struts2有其自身的优势,相比使用Servlet,Struts2用起来更加方便,很多事情它自动就帮我们做了,而且Struts2还具有更加先进的架构和思想。

对于Struts2框架的历史也非常有意思,大部分框架不同版本之间性质上不会有什么改变,基本是不断修改bug和完善功能,而Struts2和它之前的版本Struts1之间的最大区别就是技术上没什么关系,这就要从Struts的历史说起。

在早年Struts2还没出来的时候,Struts1特别火,用得很广,但这时候Struts1的作者非常苦恼,因为Struts1当时虽然很好用,但是它基于的架构和所有的功能构建都是在Servlet之上(这里指的不是Servlet技术,而是具体的Servlet类),而Servlet是线程不安全的,所以导致整个Struts1框架也是处于一种线程不安全状态,使得很多的功能无法落实,所以Struts1的作者就很苦恼这个问题,他一直在研发新的架构。与此同时,另外有一个团队也非常苦恼,这个团队(也就是WebWork团队)也开发了一款前端处理框架,但是他们是后来人,他们看到了Struts的缺陷,于是他们开发出来的框架同样也是基于Servlet技术,但它们基于的是Filter(过滤器),这样设计出来的框架会灵活很多,而且从架构上来说彻底摆脱了线程安全问题。可是当时满大街用的都是Struts1框架,WebWork团队辛辛苦苦开发出的框架根本没人用,推广不出去。于是,WebWork就想了一个办法,找到了Struts1的作者想要一起合作,Struts的作者看到这个新的框架后,两者一拍即合,于是有了Struts2框架。所以Struts2的前身就是WebWork,而Struts1和Struts2两者基本是两个不同的框架,当然后来Struts1的作者也把自己之前想要在Struts1中实现的想法带入到了Struts2中来,所以现在的Struts2框架是一个强强联手的框架,整合了Struts1和WebWork的优点。

2、SpringMVC

要了解SpringMVC,首先来看看MVC模型,对于表现层的框架一般都会采用MVC这种设计模型去做架构,MVC即:

  • M model 模型:实际上就是java中JavaBean的一个对象,用来封装数据;

  • V View 视图:其中指的是jsp技术或者HTML这种技术,用来显示;

  • C Controller 控制器:指的是像Servlet这种技术,能用来接收请求。

MVC这种设计模型的意思就是,发请求,请求先到达控制器(Controller),控制器接收请求,请求接收到之后,再用一个JavaBean(model)把拿到的数据封装起来,根据这个JavaBean中封装的数据就可以调用业务层进行业务处理,业务层如果再访问持久层的数据,也可以再把数据封装到JavaBean当中,最终可以把程序转发到jsp(view),jsp显示结果生成HTML响应给用户,这就是整个一个MVC模型,分工非常明确。

SpringMVC框架也是一个处于表现层的框架,是采用MVC模型来设计的,所以它能够接受请求,拿到请求参数,并进行数据的封装,还可以转发到jsp显示对应的数据。同时,它也是一个轻量级的web框架,它属于Spring FrameWork的一个后续产品,已经融合在Spring Web Flow中。做web开发可以选择SpringMVC这个框架,也可以选择别的框架(比如Struts2),因为最终Spring都可以帮你集成。但使用SpringMVC更有好处,因为SpringMVC属于Spring的一部分,SpringMVC和Spring的整合相比别的框架更加容易。

SpringMVC目前已经成为最主流的框架之一,并且随着Spring3.0的发布,已经全面超越Struts2,成为最优秀的MVC框架。

它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口,而如果我们使用Servlet,必须继承HttpServlet或者实现Servlet接口。同时它还支持RESTful编程风格的请求。

3、Hibernate框架和Mybatis

Hibernate框架是一个全自动的、完全面向对象的持久层框架,代替了以往的DButils帮助我们完成数据库操作。

下图显示了Struts2框架在三层架构中的位置:

javaEE常用开源框架的认识及概述,带你深入探索Java开发世界

使用Hibernate框架的好处:能够使我们操作数据库时,可以用面向对象的方式来完成,而不需要写SQL语句。

Hibernate是一款orm框架,orm(Object Relational Mapping,)即对象关系映射,在hibernate中体现为使用一个配置文件来配置表,即对象与数据中表之间的映射关系,其中对象名对应一个表名,对象属性对应表中的某一列。

相对于Hibernate,Mybatis框架是一个半自动化的持久层框架,同样也是用于完成数据库操作。相比hibernate框架,两者有相同点也有不同点,hibernate框架sql语句已经被封装,直接可以使用,而mybatis 属于半自动化,sql需要手工完成,稍微繁琐,但可以避免不需要的查询,提高系统性能。同时Mybatis通过手动写SQL语句,也更容易维护。

在开发工程中,Hibernate框架无需过多关注底层实现,只要去管理对象即可,而Mybatis需要自行管理映射关系。

总结起来,Mybatis相比于Hibernate,更加的小巧、简单,某些操作需要我们自己完成。

3、Spring框架

Spring是分层的Java SE/EE应用full-stack(全栈式)轻量级开源框架,以IOC(Inverse Of Control 反转控制)和AOP(Aspect Oriented Programming 面向切面编程)为内核,提供了表现层MVC和持久层Spring JDBC以及业务层事务管理等众多的企业级应用技术,还能整合众多著名的开源第三方框架和类库,逐渐成为使用最多的JavaEE企业应用开源框架。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

手绘了下图所示的kafka知识大纲流程图(xmind文件不能上传,导出图片展现),但都可提供源文件给每位爱学习的朋友

image.png

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
爱学习的朋友

[外链图片转存中…(img-ECSjCebU-1713398736379)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tephra旨在构建一个稳定、高效、易于集群、快速扩展的JavaEE开发框架。目前,Tephra已经具备了以下特性: 提供类级别的热更新,但仅建议在需要快速修正严重BUG、并且无法立即进行全更新时使用。 提供全冗余方式的缓存,自动在每个节点间同步缓存数据,而每个节点都仅从本地内存中获取缓存数据,从而提供高效的执行效率,并且当部分节点宕机时仍旧能正常提供服务。当然,也允许使用Redis提供统一的中心节点缓存。此特性可用于多节点负载时提供不停服更新。 提供数据库读写分离、及读负载均衡,并且允许配置多个不同的数据库,甚至允许在运行期间增加新的数据库配置,并自动映射ORM。允许执行标准的SQL或存储过,同时提供了一个简单、轻量的ORM工具,并集成Hibernate、MyBatis为复杂ORM需求提供支持。 提供MongoDB工具实现对NoSQL的支持,支持负载均衡。 提供轻量级、快速响应的控制器,允许设置最大并发峰值,以确保在突如其来的并发攻击后能继续正常提供服务;也允许设置单IP最大并发量,确保小量IP并发攻击时仍能正常提供服务。允许发布为HTTP(S)、WebSocket、Socket服务。 提供JavaScript脚本引擎支持,允许JavaScript与JavaBean自由交互,并且可以发布JavaScript为服务;以及使用Javacript作为复杂规则验证器。 提供Hadoop存取支持。 模块化开发,使用注解简化配置,增强代码可读性与维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值