Java主流框架盘点:Spring、MyBatis、SpringMVC等深度解析
java十大框架?
目前主流的Java框架有哪些?主流Java框架是:SSM
1Spring,常年企业开发必选框架中排名第一,要求开发者必须学习原理、应用、扩展等。
通过从各个角度掌握它,我们最终可以建立自己的基础。
2Mybatis,通过对源码的熟练使用,我们可以对Mybatis的各个方面进行深入、细致、系统的了解
3SpringMVC,从企业实际应用到基础知识框架,深入讲解MVC机制,手动实现SpringMVC框架部署流程不但适用而且我们也可以自己部署SpringMVC,一门课程过渡架构所需
目前Java主流框架有哪些??
1.Spring
在其他Java框架中是绝对的领先者。
Spring熟练程度是Java开发人员职位最常见的要求之一。
造成这种情况的原因有很多,但最主要的原因是共性的。
2.Play
Play是大多数开发者更喜欢的另一个轻量级框架。
它允许您使用Java和Scala构建Web应用程序。
它旨在满足现代网络和移动应用程序的需求。
3.Spark
SparkFramework是Java和Kotlin编程语言的特定领域语言和微框架。
Kotlin也在JVM上运行,并且与Java100%互操作。
使用Spark,您可以轻松开发Web应用程序、微服务和RESTAPI。
4.JHipster
Jhipster是最新的Java框架之一。
它于2013年发布。
Jhipster将SpringBoot、Angular和React集成到一个大型框架中。
它允许您轻松构建基于Java的现代Web应用程序。
5.Blade
Blade是一个轻量级的Java8+MVC框架。
当谈到Blade的轻量时,我们指的是它的源代码大小,不超过500KB。
6.Hibernate
当谈论最好的JavaWeb框架时,Hibernate是不容忽视的。
Hibernate是一个ORM(对象/关系映射)框架。
它允许您使用Java而不是SQL向数据库服务器编写查询,这通常会改变数据库的整体外观。
7.MyBatis
MyBatis是Java编程的映射框架。
它简化了Java应用程序与SQL数据库的链接过程:它充当它们之间的中间件。
8.Struts
Struts是一个开源MVC(模型-视图-控制器)框架,用于创建企业级JavaWeb应用程序。
最初的Struts框架(Struts1.x)在2007年与WebWork框架合并时被重建。
Struts1.x和Struts2.x不可互换,因为它们之间存在重要差异。
您可以从Struts发行版页面下载它。
9.Vaadin
Vaadin是一个开源客户端-服务器框架,允许您使用界面组件创建Web应用程序预先设计的用户。
它专为业务应用程序而构建,重点关注易于访问、美观且直观的用户界面。
10.JavaServerFaces(JSF)
JSF是JCP标准技术,用于在JavaEE平台上创建基于组件的用户界面。
这个框架可能不是最好的,但最大的好处是Oracle支持、许多其他工具、优秀的文档和友好的社区。
该模型封装了应用程序的数据以及它们通常形成的POJO。
视图负责呈现模型数据,更一般地说,它生成客户端浏览器可以解释的HTML输出。
控制器负责处理用户请求,设置适当的模型,并将其传递给视图进行显示。
Spring的Web模型-视图-控制器(MVC)框架是基于DispatcherServlet设计的,用于处理所有HTTP请求和响应。
扩展信息:
1.IOC容器:
IOC容器是一个具有依赖注入功能的容器。
IOC容器负责初始化、定位和配置。
应用程序并在这些对象之间建立依赖关系。
应用程序不需要直接在代码中创建新的相关对象,应用程序由IOC容器聚合。
在Spring中,BeanFactory才是IOC容器的真正代表。
2.AOP:
简单来说,它封装了与业务操作无关但经常被业务模块调用的逻辑或职责,以减少系统中的重复代码。
耦合性好,有利于以后的可操作性和可维护性。
AOP代表横向关系
Java的三个主要框架是:
1.Struts
为了解决这些问题,Struts框架出现了。
这是一个完美的MVC实现并且有一个集线器。
控制器层(Servlet),针对不同的业务我们需要一个负责页面跳转和后台逻辑操作的Action层,一个或几个负责显示数据输入输出的JSP页面以及一个负责Action和JSP之间传递的Form类。
数据。
JSP可以使用Struts框架提供的一组标签,就像使用HTML标签一样简单,但却可以完成非常复杂的逻辑。
从现在起,JSP页面中不再需要有一行Java代码。
但是,将所有操作逻辑都放在Struts的Action中,会导致Action类的复用性降低,逻辑混乱。
因此,人们常常将整个Web应用分为三层负责显示。
该层调用业务层完成操作逻辑,业务层再调用保留层完成数据库的读写。
使用JDBC连接读写数据库,我们最常见的就是打开数据库连接,使用SQL语句读写复杂并关闭需要转换的连接。
或包装后转运出去。
这是一个非常繁琐的过程。
2.Hibernate
此时,Hibernate框架发挥了作用,要求您创建一系列持久化类。
每个类的属性可以简单地视为一个数据库。
当然,表属性是相互对应的。
当然,也可以进行关系数据库中不同表文件之间的对应关系。
当我们需要相关操作的时候,我们就不用再担心数据库表了。
我们不再需要逐行查询数据库。
我们只需要持久层就可以完成增删改查的功能。
让我们的软件开发真正实现对象驱动,而不是杂乱的代码驱动。
我的感觉是,使用Hibernate比JDBC减少了80%的编程量。
现在我们有三个类,但是每个类之间的调用是什么呢?例如,显示层的Struts需要调用业务类,则需要新建一个业务类,然后使用;如果业务层需要调用持久化类,也需要创建新的持久化类;班级。
互相称呼这种新方法体现了软件开发中最糟糕的设计。
简而言之,调用者依赖于被调用者,并且他们之间形成了牢固的联系。
如果我想在其他地方重用一个类,那么它所依赖的其他类也需要包含在内。
程序变得非常混乱,各个类互相依赖、互相调用,复用程度极低。
如果修改一个类,许多依赖于它的类都会受到影响。
为此,Spring框架出现了。
3.Spring
Spring的作用是完全分离类之间的依赖关系。
如果一个类依赖于某些东西,那么它就是一个接口。
至于如何实现这个接口,并不重要。
只要你有一个实现这个接口的类,你就可以轻松地通过xml配置文件将实现类注入到调用该接口的类中。
所有这些类之间的依赖关系完全被配置文件取代。
所以,Spring框架的核心就是所谓的控制反转和依赖注入。
目前的结构是Struts负责显示层,Hibernate负责持久层,Spring负责中间业务层。
这种结构是目前国内最流行的JavaWeb应用架构。
。
另外,由于Spring使用了依赖依赖和AOP(面向切面编程),其内部模型非常优秀,以至于Spring本身也实现了一个使用依赖依赖的MVC框架,称为SpringMVC,并且为了处理好一切,Spring集成了Hibernate,增强了管理从Hibernate的持久层到企业层的一切能力,使其使用起来更加方便和强大。
Struts框架始于2000年,技术相当完全的。
目前,Struts框架是全球Java开发中无可争议的显示层技术之王。
它拥有庞大的用户群和优秀的开发团队。
这也是国内大多数Java软件公司对新员工的基本要求。
Java始终排名第一,因此它是最著名的软件编程语言之一。
及时的更新和新版本的发布使其成为一种充满活力和竞争力的编程语言。
2020年最常用的java框架
最常用的十个框架:
1.SpringMVC
3。
4.达博
5.Maven
6.RabbitMQ
7.
9.再做一次
10。
弘
1.SpringMVC
SpringWebMVC是一个基于Java的轻量级Web框架,它实现了按需WebMVC设计模式,即采用MVC架构模型的思想解耦Web层的职责。
请求驱动意味着使用请求-响应模型。
该框架的目的是帮助我们简化开发,SpringWebMVC也旨在简化我们日常的Web开发。
该模型封装了应用程序的数据以及它们通常组成的POJO。
视图负责呈现模型数据,更一般地说,它生成客户端浏览器可以解释的HTML输出。
控制器负责处理用户请求,设置适当的模型,并将其传递给视图进行显示。
Spring的Web模型-视图-控制器(MVC)框架是基于DispatcherServlet设计的,用于处理所有HTTP请求和响应。
SpringWebMVC请求处理流程
请点击输入图片描述
具体步骤可以如下:
1.首先,用户发送请求——UI控制器UI控制器决定选择哪个页面控制器进行处理,并根据请求信息将请求授权给它(例如例如URL),表示图2-中步骤1和2之前的控制器的控制逻辑部分;1;
2.页面控制器收到请求后,首先会进行功能处理。
数一个物体。
这个对象在SpringWebMVC中被称为命令对象并被验证。
然后将命令对象委托给业务对象进行处理;处理后,返回图中的ModelAndView(模型数据和逻辑视图名称);2-1步骤3、4、5;
3、UI控制器会重新获得控制权,然后根据返回的视图名称逻辑并传入模型数据来选择对应的视图进行显示图2-1中步骤6和7的视图;
4.UI控制器重新获得控制并向用户返回响应,如图2-1中的步骤8,该过程结束。
2.春季
2.1。
IOC容器:
IOC容器是一个具有依赖注入功能的容器。
配置对象并建立这些对象之间的依赖关系。
应用程序不需要直接在代码中创建新的相关对象,应用程序由IOC容器聚合。
在Spring中,BeanFactory才是IOC容器的真正代表。
2.2。
AOP:
简单来说,它封装了与业务操作无关但通常由业务模块调用的逻辑或职责,以减少系统中的代码重复。
减少模块之间的耦合,有利于以后的可操作性和可维护性。
AOP代表横向关系
AOP用于封装横切关注点,可用于以下情况:
授权真实
缓存
上下文切换内容交付
错误处理
部分加载
调试
日志记录、监控、gandmonitoring记录日志跟踪优化调优
性能优化性能优化
持续可持续性
聚合资源池资源
同步同步
交易
3.Mybatis
MyBatis是一个很棒的持久分层框架,支持常见的SQL查询、存储过程和高级映射。
MyBatis删除了几乎所有的JDBC代码以及手动设置参数和检索结果集。
MyBatis使用简单的XML或注释进行初始配置和映射,将接口和JavaPOJO(PlainOldJavaObjects,常规Java对象)映射到数据库中的记录。
总体流程:
(1)加载配置并初始化
触发条件:加载配置文件
加载SQL配置信息变为各MappedStatement对象(包括传入参数映射配置、执行SQL语句、结果映射配置等设置)并保存在内存中。
(2)接收调用请求
触发条件:调用Mybatis提供的API
传入参数:SQLID和参数对象传入数量
处理过程:将请求传递给更低的请求处理层进行处理。
(3)主动请求处理
触发条件:请求传入API接口层
传入参数:SQLID和传入参数对象
处理过程:
(A)通过SQLID找到对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,以获取最后执行的SQL和执行的传入参数。
?获取数据库连接,将最终的SQL语句和执行参数传递给数据库执行,并得到执行结果。
(D)将得到的执行结果根据MappedStatement对象中的结果映射配置进行转换,得到最终的处理结果。
(E)释放连接资源。
(4)返回处理结果,返回最终的处理结果
MyBatis最强大的功能之一就是动态语句功能。
如果你已经有以前使用JDBC或类似框架的经验,您会知道将SQL语句条件串在一起有多么困难,确保不要忘记空格或在列后面省略逗号等。
动态语句可以彻底解决这些痛点。
4.Dubbo
Dubbo是一个分布式服务框架,专门提供高性能、透明的RPC(RemoteprocedureCallProtocol)远程服务调用解决方案,以及SOA服务管理方案。
。
简单来说,dubbo是一个服务框架,如果不需要分发的话,实际上没什么用处。
只有分布式的时候才需要像dubbo这样的分布式服务框架,这就是它的本质。
服务调用,说白了,就是一个调用远程服务的分布式框架。
1.透明调用远程方法,就像调用本地方法一样,只需要简单的配置,无需任何API侵入。
2.容错和软负载均衡机制可以替代内部网络上的F5等硬件负载均衡器,降低成本和单点。
3.自动服务注册和发现,不再需要硬编码服务提供商地址。
订阅中心根据接口名称查询服务提供商的IP地址,并可以无缝添加或删除。
服务提供商。
节点角色说明:
Provider:提供服务的服务提供者。
消费者:服务消费者调用远程服务。
Registry:服务注册和发现的注册中心。
监控:监控中心,统计服务调用次数和调用时长。
容器:运行服务的容器。
5.Maven
Maven是一个项目管理和构建自动化工具。
越来越多的开发者使用它来管理项目中的jar包。
但对于我们这样的程序员来说,最关心的还是它的项目构建功能。
6.RabbitMQ
消息队列通常会提取项目中一些不需要立即返回的耗时操作,并执行这种异步处理方式。
它显着节省了服务器请求。
响应时间,从而提高系统吞吐量。
RabbitMQ是一个用Erlang实现的高可靠、并发的AMQP消息队列服务器。
Erlang是一种动态函数式编程语言。
对应Erlang,每个Actor对应一个Erlang进程,进程之间通过消息传递进行通信。
与共享内存相比,通过消息传递进行进程间通信的直接好处是消除了直接锁定开销(无论Erlang虚拟机底层实现中的锁定应用如何)。
AMQP(AdvancedMessageQueueProtocol)定义了通知系统规范。
该规范描述了分布式系统中的子系统如何通过消息进行交互。
7.Log4j
日志记录的优先级分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或您定义的级别。
8.Ehcache
EhCache是一个纯粹、快速、强大的Java进程内缓存框架。
这是Hibernate中默认的CacheProvider。
Ehcache是一种广泛使用的开源Java分布式缓存。
主要用于通用缓存、JavaEE和轻量级容器。
它具有内存和磁盘存储、缓存加载器、缓存扩展、缓存异常处理程序、gzip缓存servlet过滤器、REST和SOAPAPI支持以及其他功能。
优点:
1.快
2。
简单
3.多种缓存策略
4、数据缓存有内存和磁盘两级,无需担心容量问题
5.缓存数据将在虚拟机重新启动期间写入磁盘
>6。
它可以通过RMI使用,可以注入API和其他方法进行分布式缓存
7.有一个缓存和缓存管理器的监听接口
8。
支持多个缓存管理器实例和单个实例的多个缓存池
9.缺点:1.DiskCache占用大量磁盘空间:这是因为DiskCache的算法非常简单,算法的简单也使得Cache非常有效。
它只是直接连接元素。
所以找到元素是非常快的。
如果使用DiskCache,在频繁的应用中磁盘很快就会被占满。
2.数据安全得不到保障:java突然被kill时,可能会出现冲突。
EhCache的解决方案是如果存在文件冲突则重建缓存。
当需要缓存数据时,这可能是不利的。
当然,Cache只是为了速度,并不能保证数据安全。
如果要保证数据存储安全,可以使用BekeleyDBJavaEdition版本。
这是一个嵌入式数据库。
可以保证存储安全和空间利用率。
9.Redis
Redis是一个键值存储系统。
与Memcached类似,它支持的存储值类型相对较多,包括string、list、set、zset、hash(哈希类型)。
所有这些数据类型都支持推送/弹出、添加/删除、相交、合并、差异和更丰富的操作,并且这些操作都是原子的。
在此基础上,redis支持多种不同的安排。
和memcached一样,对数据进行缓存以保证效率。
不同的是,redis会定期将更新的数据写入磁盘或者将修改操作写入额外的日志文件,并在此基础上实现主从同步。
Redis数据库完全位于内存中,仅使用磁盘进行维护。
与许多键值数据存储相比,Redis拥有更丰富的数据类型。
Redis可以将数据复制到任意数量的从服务器。
1.2。
Redis的优点:
(1)速度极快:Redis非常快每秒可以执行大约110,000组,每秒大约可以执行超过81,000条记录。
(2)支持丰富的数据类型:Redis支持列表、集合、有序集、哈希等大多数开发者所熟知的大部分数据类型。
这使得解决各种问题变得非常容易,因为我们知道根据数据类型可以更好地处理哪个问题。
(3)操作是原子的:所有的Redis操作都是原子的,确保如果两个客户端同时访问Redis服务器,他们都会收到更新的值。
(4)多功能实用工具:Redis是一个多功能工具,可以用于许多应用程序,例如缓存,消息传递,队列(Redis原生支持发布/订阅),任何短暂的生命周期应用。
数据和应用程序,例如网络应用程序会话、网站访问等。
1.3Redis的缺点:
(1)单线程
(2)内存消耗
10。
>
ApacheHiro是一个Java安全框架,旨在简化身份验证和授权。
Hiro在JavaSE和JavaEE项目中都可用。
主要用于处理身份认证、授权、企业会话管理、加密等。
Shiro的具体功能如下:
(1)身份认证/登录,验证用户是否具有相应的身份
(2)Authorization,即权限;verify,验证某件事经过认证的用户是否具有某种权限,即判断该用户是否可以做某件事,常见的例子是:验证用户是否具有某种角色。
或者详细验证用户对某个资源是否有一定的权限;
(3)会话管理,即用户登录后就是一个会话。
一次会话中的信息;该会话可以在普通的JavaSE环境中,也可以在Web环境中。
(4)加密以保护数据机密性,例如密码加密和存储在数据库中而不是纯文本存储
(5)Web支持,可以方便地集成到Web环境中;
(6)shiro支持多线程应用程序的并发验证,这意味着如果在一个线程内启动另一个线程,权限可以自动传播到那里;
(7)提供测试支持;
(8)允许用户冒充其他用户(如果他们允许的话)访问;
(9)记住我,这是一个很常见的功能,即之后一次登录有时,您下次登录时无需返回。
文字描述可能无法让我们猿友完全理解具体功能的含义。
下面我们以登录信息验证为例向猿类介绍Shira的用途。
至于其他功能,猿猴去学习如何使用还不算太晚。
11.设计模式
这不是一个框架,可以忽略。
不过,我认为有必要了解一下设计模式的思想。
思想理念:
开放封闭原则:
开放封闭原则是指对扩展开放,对修改封闭。
当程序需要扩展时,原有代码不能修改。
接口编程,接口编程,依赖的是抽象而不是具体。
尝试使用组合/聚合而不是继承。
一个实体应该尽可能少地与其他实体交互,使得系统的功能模块相对独立。
使用多个独立的接口比使用单个接口更好。
里氏替换原则:
(1)子类的能力必须大于或等于父类,即父类可以使用的所有方法都可以是被子类使用。
(2)返回值也是如此。
假设超类的一个方法返回一个List,而子类的一个方法返回一个ArrayList。
这当然是可能的。
如果父类的方法返回一个ArrayList,而子类返回一个List,那么这没有任何意义。
这里子类返回值的可能性小于父类的可能性。
(3)也有例外的情况。
任何子类方法都可以声明一个抛出父类方法声明的异常的子类。
父类未声明的异常不能声明抛出。
Java框架可以简化开发,帮助我们更轻松地开发程序。
所以,学好Java框架更为重要。
主要的Java框架包括:SpringMVC、Spring、Mybatis、Dubbo、Maven、RabbitMQ、Log4j、Ehcache、Redis和Shira。
但是我们有十个人
discuz用redis好吗
使用redis作为diskuz是个好主意。使用redis的优点:数据存储在内存中,读写速度快。
支持的数据类型资源丰富。
支持全部原子的事务和操作。
可以调整数据生存的生命周期,所以diskuz最好使用redis。
Redis是由意大利人SalvatoreSanfilippo开发的内存缓存数据库。
大数据核心技术有哪些
大数据技术体系庞大、复杂。1、数据采集和预处理:FlumeNG系统支持实时数据采集,将各种数据发送到日志系统进行数据采集;2.数据存储:Hadoop作为一个开源框架,专为离线、大规模数据分析而设计。
HBase是一个分布式、开放的、面向列的数据库。
可以认为是对HDFS的一种封装。
3.数据清洗:MapReduce与Hadoop查询引擎一样,用于大数据集的并行计算。
4、数据查询分析:Hive的核心工作是将SQL翻译成MR程序,将数据描述结构化为数据库表,并提供HQL(HiveSQL)查询功能。
Spark提供了一个内存分布式数据库,除了提供交互式查询之外,还可以优化迭代任务。
5、数据可视化:与一些BI平台对接,实现数据分析可视化,用于指导决策服务。
为什么要使用Redis
1.原因是,虽然redis的读写速度很快,但是不适合数据持久层,主要原因是使用redis将数据写入磁盘是以效率为代价的,即redis必须。每隔指定时间进行一次数据备份/放入磁盘,对于单线程系统来说,肯定会因为“中断”而影响效率,结果得不偿失。
2、Redis是内存数据库,访问速度非常快,因此可以解决这类缓存问题,如下:会话缓存(SessionCache)使用Redis最常见的场景之一就是会话缓存(sessioncache))。
3、使用redis的好处:数据存储在内存中,读写速度快,支持的数据类型支持事务,操作都是数据生命周期可以设置;4、因为redis比较简单,所以更被大众所熟悉。