一、5个常用的spring框架

1.spring framework

也就是我们经常说的spring框架,包括了ioc依赖注入,Context上下文、bean管理、springmvc等众多功能模块,其它spring项目比如spring boot也会依赖spring框架。

2.spring boot

它的目标是简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。

Spring Boot的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。

3.Spring Data

是一个数据访问及操作的工具集,封装了多种数据源的操作能力,包括:jdbc、Redis、MongoDB等。

4.Spring Cloud

是一套完整的微服务解决方案,是一系列不同功能的微服务框架的集合。Spring Cloud基于Spring Boot,简化了分布式系统的开发,集成了服务发现、配置管理、消息总线、负载均衡、断路器、数据监控等各种服务治理能力。比如sleuth提供了全链路追踪能力,Netflix套件提供了hystrix熔断器、zuul网关等众多的治理组件。config组件提供了动态配置能力,bus组件支持使用RabbitMQ、kafka、Activemq等消息队列,实现分布式服务之间的事件通信。

▌5. Spring Security

主要用于快速构建安全的应用程序和服务,在Spring Boot和Spring Security OAuth2的基础上,可以快速实现常见安全模型,如单点登录,令牌中继和令牌交换。你可以了解一下oauth2授权机制和jwt认证方式。oauth2是一种授权机制,规定了完备的授权、认证流程。JWT全称是JSON Web Token,是一种把认证信息包含在token中的认证实现,oauth2授权机制中就可以应用jwt来作为认证的具体实现方法。

二、Struts的具体作用

struts是曾经非常火爆的web组合ssh中的控制层。我们知道web服务一般都采用MVC分层模型构建,就是model层负责内部数据模型,controller负责请求的分发控制,view层负责返回给用户展示的视图。struts实现的就是其中控制层的角色。

Struts采用Filter实现,针对类进行拦截,每次请求就会创建一个Action。使用struts的SSH组合已经逐渐被使用springMVC的SSM组合代替,也就是Spring-MVC+Spring+MyBatis的组合,一方面原因是由于struts对几次安全漏洞的处理,让大家对struts的信心受到影响;另一方面,springmvc更加的灵活,不需要额外配置,不存在和spring整合等问题,使用更加方便,所以建议以SSM框架的学习为主。

三、常用的ORM框架

ORM就是对象关系匹配,是为了解决面向对象与关系数据库存在的互不匹配的问题。简单来说,就是把关系数据库中的数据转换成面向对象程序中的对象。

常用的ORM框架有Hibernate和MyBatis,也就是ssh组合和ssm组合中的h与m。

它们的特点和区别如下:

Hibernate对数据库结构提供了完整的封装,实现了POJO对象与数据库表之间的映射,能够自动生成并执行SQL语句。只要定义了POJO 到数据库表的映射关系,就可以通过Hibernate提供的方法完成数据库操作。Hibernate符合JPA规范,就是Java持久层API。

mybatis通过映射配置文件,将SQL所需的参数和返回的结果字段映射到指定对象,mybatis不会自动生成sql,需要自己定义sql语句,不过更方便对sql语句进行优化。

总结起来:

1.hibernate配置要比mybatis复杂的多,学习成本也比mybatis高。mybatis,简单、高效、灵活,但是需要自己维护sql;
2.hibernate功能强大、全自动、适配不同数据库,但是非常复杂,灵活性稍差。

四、Netty简介

Netty是一个高性能的异步事件驱动的网络通信框架,Netty对JDK原生NIO进行封装,简化了网络服务的开发。下文会详细讲解。

另外,同类型的框架还有mina、grizzly,不过目前使用的相对较少,一般不会在面试中出现,可以作为兴趣简单了解。

五、RPC服务

Motan、Dubbo、gRPC都是比较常用的高性能rpc框架,可以提供完善的服务治理能力,java版本的通信层都是基于前面提到的Netty实现。它们的特点稍后介绍。

六、其他常用框架

jersy和restEasy都是可以快速开发restful服务的框架。

和springmvc相比,这两个框架都是基于jax-rs标准,而springmvcs基于servlet,使用自己构建的API,是两个不同的标准。

shiro框架是一个与spring security类似的开源的权限管理框架,用于访问授权、认证、加密及会话管理。能够支持单机与分布式session管理。

相比security,shiro更加简单易用。