10分钟详解Spring全家桶7大知识点

Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。它包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow等解决方案。

很多研发人员把spring看作心目中最好的java项目,没有之一。

所以这是重点也是难点,工作中必须会,面试时肯定考。

那么,今天花费10分钟,梳理Spring框架相关知识。

Spring知识点-汇总

spring系列包含非常多的项目,可以满足java开发中的方方面面。

先来看常用框架的知识点汇总,如图:

10分钟详解Spring全家桶7大知识点_第1张图片

一、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功能强大、全自动、适配不同

你可能感兴趣的:(Java,后端,架构,spring,java,spring,cloud)