Java十大常用框架介绍

Java十大常用框架介绍
最新回答
www王者

2026-05-02 12:44:42

Java 十大常用框架涵盖 Web 开发、持久层、分布式服务、项目管理、消息队列、日志记录、缓存、安全等多个领域,以下为详细介绍:

Spring MVC
  • 定义:基于 Java 的 Web MVC 设计模式请求驱动型轻量级框架,用于简化 Web 开发。
  • 核心组件:

    Model(模型):封装应用程序数据,通常由 POJO 组成。

    View(视图):负责呈现模型数据,生成客户端浏览器可解释的 HTML 输出。

    Controller(控制器):处理用户请求,建立模型并传递给视图渲染。

  • 工作流程:

    用户发送请求至前端控制器,前端控制器根据请求信息选择页面控制器处理。

    页面控制器收集和绑定请求参数到命令对象,验证后委托给业务对象处理,返回 ModelAndView。

    前端控制器根据逻辑视图名选择视图渲染,传入模型数据。

    前端控制器将响应返回给用户。

Spring
  • IOC 容器:

    具有依赖注入功能的容器,负责实例化、定位、配置应用程序中的对象及建立对象间依赖。

    应用程序由 IOC 容器组装,无需直接在代码中 new 相关对象,BeanFactory 是其实际代表者。

  • AOP:

    将与业务无关但为业务模块共同调用的逻辑或责任封装起来,减少系统重复代码,降低模块间耦合度。

    用于封装横切关注点,如权限认证、缓存、错误处理、日志记录等场景。

MyBatis
  • 定义:支持普通 SQL 查询、存储过程和高级映射的持久层框架,消除几乎所有 JDBC 代码和参数手工设置及结果集检索。
  • 配置方式:使用简单 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs 映射成数据库记录。
  • 总体流程:

    加载配置并初始化,将 SQL 配置信息加载成 MappedStatement 对象存储在内存中。

    接收调用请求,调用 Mybatis 提供的 API,传入 SQL 的 ID 和参数对象。

    处理操作请求,根据 SQL 的 ID 查找对应对象,解析得到最终 SQL 和参数,获取数据库连接执行并得到结果,根据结果映射配置转换处理结果,释放连接资源。

    返回处理结果。

  • 特性:动态语句功能强大,解决 SQL 语句条件连接的痛苦。
Dubbo
  • 定义:分布式服务框架,提供高性能和透明化的 RPC 远程服务调用方案及 SOA 服务治理方案。
  • 特点:

    透明化远程方法调用,像调用本地方法一样调用远程方法,配置简单无 API 侵入。

    具备软负载均衡及容错机制,可替代硬件负载均衡器,降低成本减少单点。

    服务自动注册与发现,注册中心基于接口名查询服务提供者 IP 地址,能平滑添加或删除服务提供者。

  • 节点角色:

    Provider:暴露服务的服务提供方。

    Consumer:调用远程服务的服务消费方。

    Registry:服务注册与发现的注册中心。

    Monitor:统计服务调用次数和时间的监控中心。

    Container:服务运行容器。

Maven
  • 定义:项目管理和构建自动化工具,主要用于管理项目中的 jar 包,程序员更关注其项目构建功能。
RabbitMQ
  • 定义:用 Erlang 实现的高并发高可靠 AMQP 消息队列服务器。
  • 相关概念:

    Erlang:动态类型函数式编程语言,每个 Actor 对应一个 Erlang 进程,进程间通过消息传递通信,消除直接锁开销。

    AMQP:定义分布式系统中各子系统通过消息交互的规范。

  • 作用:将项目中无需即时返回且耗时的操作提取出来进行异步处理,节省服务器请求响应时间,提高系统吞吐量。
Log4j
  • 定义:日志记录框架,日志记录优先级分为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 或用户定义级别。
Ehcache
  • 定义:纯 Java 的进程内缓存框架,快速、精干,是 Hibernate 中默认的 CacheProvider,也是广泛使用的开源 Java 分布式缓存。
  • 特点:

    优点:

    快速、简单,有多种缓存策略。

    缓存数据有内存和磁盘两级,无需担心容量问题,虚拟机重启时缓存数据会写入磁盘。

    可通过 RMI、可插入 API 等方式进行分布式缓存,具有缓存和缓存管理器的侦听接口。

    支持多缓存管理器实例和一个实例的多个缓存区域,提供 Hibernate 的缓存实现。

    缺点:

    使用磁盘 Cache 时占用磁盘空间大,因 DiskCache 算法简单,元素直接追加存储,搜索快但磁盘易满。

    不能保证数据安全,突然 kill 掉 java 可能产生冲突,重建 cache 对需保存的 Cache 数据不利。

Redis
  • 定义:key - value 存储系统,支持多种数据类型,包括 string、list、set、zset 和 hash,数据缓存在内存中,周期性把更新数据写入磁盘或把修改操作写入追加记录文件,实现 master - slave 同步。
  • 特点:

    优点:

    异常快速,每秒能执行约 11 万集合,每秒约 81000 + 条记录。

    支持丰富的数据类型,易解决各种问题。

    所有操作都是原子的,保证多客户端同时访问时获取更新后的值。

    是多实用工具,可用于缓存、消息、队列、会话管理、网页命中计数等。

    缺点:单线程、耗内存。

Shiro
  • 定义:Java 安全框架,在 JavaSE 和 JavaEE 项目中均可使用,用于处理身份认证、授权、企业会话管理和加密等。
  • 功能点:

    身份认证/登录,验证用户身份。

    授权,验证已认证用户是否拥有某个权限。

    会话管理,管理用户登录后的会话信息。

    加密,保护数据安全性,如密码加密存储。

    Web 支持,易集成到 Web 环境。

    缓存,提高效率。

    支持多线程应用的并发验证。

    提供测试支持。

    允许用户假装为另一个用户身份访问。

    具备“记住我”功能。