Spring 家族


​​​​​​​​​​​​​​

目录

​​​​Spring 家族的组成关系

Java补充

 反射

Git

1. git的常用命令有哪些?

Maven

1. Maven 是什么? 主要功能? 坐标? /为什么用maven?

2. 依赖范围?

3. Maven依赖传递原则

4. maven依赖冲突及解决方案

5.  Maven 的生命周期?

5. 聚合和继承的区别与联系 ?

作用:聚合用于快速构建项目; 继承用于快速配置

6. 如何自动化部署平台搭建?

SpringMVC

1. MVC 设计思想 : 主要作用: 解耦

2. Spring MVC的优点:

3. 基本配置文件的作用

4. SpringMVC 的主要执行组件 

5. SpringMVC执行流程

6. SpringMVC 注解 

注解原理:

Spring MVC常用的注解有哪些?

SpingMvc中的控制器的注解一般用哪个,有没有别的注解可以替代?

5. 拦截器和ServletFilter 的区别

SpringMvc里面拦截器是怎么写的:

6. SpringMVC异常处理之XML配置方式

1.Spring MVC的异常处理 ?

2. 如何解决POST请求中文乱码问题,GET的又如何处理呢?

6. SpringMVC面试小题

6.1 Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决?

6.2 SpringMVC和struts2的区别有哪些?

6.3 SpringMVC怎么样设定重定向和转发的?

6.4 SpringMvc怎么和AJAX相互调用的?

7. Operate - tips : 

1.1 IOC / 依赖注入

1.2 AOP

Spring 

Spring 是什么 : 

1. spring如何管理事务的?

2. ApplicationContext 接口的实现类 (近期常用):

3.Spring 实例化bean 的三种方式

4. 控制反转 IOC -- 依赖注入 DI

5. 循环依赖

6.Jdbc 操作数据库

7. 注解开发

8. IOC 与 AOP

8.1 谈谈你对Spring IOC 的理解

8.2 SpringAOP 的实现机制

8.3  AOP操作术语

8.4 BeanFactory和ApplicationContext有什么区别?

9. 动态代理和cglib 代理

9.1 JDK和cglib代理的区别 :

9.2 cglib 和 jdk 如何选择?

9.3 JDK和cglib字节码生成的区别?

9.4 Cglib 比 JDK快?NO

9.5 Spring如何选择是用JDK还是cglib?

9.6 静态代理库的实现细节

Springboot

1. 常用注解 

2. springboot 的5种异常处理机制

SpringSecurity

SSM整合

Mybatis

Mybatis 是什么?

其他

task:

1.springmvc 九大组件

springmvc 九大组件,到底包括DispatcherServlet吗,核心组件又是谁_xzb5566的专栏-优快云博客

Spring的IOC


​​​​​​​

​​​​Spring 家族的组成关系

source :  Spring SpringMVC SpringBoot SpringCloud概念、关系及区别_奋斗码农的博客-优快云博客

        Spring主要是基于IOC反转Beans管理Bean类,主要依存于SSH框架(Struts+Spring+Hibernate)这个MVC框架,所以定位很明确,Struts主要负责表示层的显示,Spring利用它的 IOC 和 AOP 来处理控制业务(负责对数据库的操作),Hibernate主要作用是数据的持久化到数据库

使用Spring的好处?框架能更让我们高效的编程以及更方便的维护我们的系统。

1. 轻量:Spring是轻量的,相对其他框架来说。

2. 控制反转 (IOC) :Spring通过控制反转实现了松散耦合,对象给出他们的依赖,而不是创建或查找依赖的对象们。

3. 面向切面编程(AOP):Spring支持面向切面编程,并且把业务逻辑和系统服务分开。

4. 容器:Spring包含并管理应用中对象的生命周期和配置。

5. MVC框架:Spring的WEB框架是个精心设计的框架,是WEB框架的一个很好的替代品。

6. 事务管理:Spring提供一个持续的事务管理接口,提供声明式事务和编程式事务。

7. 异常处理:Spring提供方便的API把 具体技术相关的异常 转化为 一致的unchecked异常。

        SpringMVC是基于Spring的一个MVC框架,用以替代初期的SSH框架; 是一个轻量级Web框架.(spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext,使得拥有web功能)。MVC为现代web项目开发的一种很常见的模式,简言之Controller(控制器)、将View (视图、用户客户端) 与 Model (模块,业务) 拆分开构成了MVC . 通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

        ( 业内常见的mvc模式的开发框架有Struts1,Struts2等。spring作为专业的开发web项目的开源框架,springMvc为内部的一个模块环节,同样采取mvc设计模式。 所以在使用spring开发web项目时,作为核心环节的MVC可以使用struts1/struts2/springMVC )

        ​​​​​​​Spring Boot是基于Spring的条件注册的一套快速开发整合包.实现了自动配置,降低了项目搭建的复杂度, Spring Boot的核心思想就是约定大于配置,一切自动完成。采用 Spring Boot可以大大的简化你的开发模式,所有你想集成的常用框架,它都有对应的组件支持

        大多数初级人员在搭建项目时话费了很多时间也未必能搭建明白。 spring-boot就是为了解决开发人员这个痛点而诞生的,说白了就是把以前的手动配置的过程自动化封装了,提供默认的配置,借用大牛总结的特点就是: 简单易用,初学者和大牛都可以轻松上手,其中的注解会给使用者提供方便; Spring boot对第三方技术进行了很好的封装和整合,提供了大量第三方接口;可以通过依赖自动配置,不需要XML等配置文件.

三者的发展与联系:[ 依赖关系 :  Spring > spring boot > spring cloud ]
         Spring 最初利用“工厂模式”(DI )和“代理模式”(AOP)解耦应用组件. 大家觉得挺好用,于是按照这种模式搞了一个 MVC 框架(一些用 Spring 解耦的组件),  开发 web 应用( SpringMVC )。 

        然后有发现每次开发都要搞很多依赖,写很多样板代码很麻烦,于是搞了一些懒人整合包(starter ),这套就是 Spring Boot . 

        ​​​​​​​Spring Cloud :现在是大数据、云时代,上云是必然选择. Spring Cloud就是一套分布式服务治理的框架,既然它是一套服务治理的框架, 那么它本身不会提供具体功能性的操作, 更专注于服务之间的通讯、熔断、监控等。因此就需要很多的组件来支持一套功能。

        对于springCloud框架来说,它和springBoot一样,注重的是微服务的开发,但是springCloud更关注的是全局微服务的整合和管理,相当于管理多个springBoot框架的单体微服务;(Spring Cloud是一系列框架的有序集合。它利用 Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线线、负载均衠、断路器、数据监控等,都可以用 Spring Boot的开发风格做到一键启动和部署)


Java补充

 反射

使用反射, 可以动态获取当前class 信息, 比如方法的信息, 注解的信息, 方法的参数, 属性等.

反射技术的应用场景:

(1) JDBC 加载驱动连接 class.forname

(2) Spring 容器框架IOC 实例化对象 :  通过反射技术实例化bean对象.

(3) 自定义注解生效 (反射+AOP) : 通过反射技术判断当前是否有加自定义注解, 若加上之后会去做一些流程的操作. 

(4) 第三方核心的框架

反射技术的使用:

Git

1. git的常用命令有哪些?

Maven

source : maven面试题_木村的博客-优快云博客_maven面试题

maven 导包问题 : https://www.jb51.net/article/191944.htm

1. Maven 是什么? 主要功能? 坐标? /为什么用maven?

maven 优点 : 

去公司的时候, 公司用的就是maven. 用git往下down项目, maven管理项目.

也是因为 maven 简化了项目之间的关系, 可以进行依赖管理, 把不同的系统依赖进行统一管理. 而且可以进行依赖之间的传递和继承. 在开发测试时候的部署, 都会相对很高效.

maven缺点 :

maven用的是约定大于配置的策略, 出现问题之后不好调试的.

maven的坐标, 算是唯一标识吧, Maven 的坐标元素包括 : groupId(当前项目的所属组织)、artifactId(实际项目中的一个模块)、version(当前项目的版本)、[maven的三大坐标GAV] 、packaging、classfier 。

用三大坐标可以在仓库中和找到响应的构件jar包.

2. 依赖范围?

注意 : maven 中有直接依赖和间接依赖之分

compile:默认范围全阶段,如果未指定任何范围,则使用该范围。编译依赖项在所有(编译,测试,运行)类路径中都可用。此外,这些依赖关系会传播到依赖的项目

provided:这很像compile,但provided范围表明 JDK或者某个容器提供运行时依赖。它只在编译和测试类路径上可用,不可传递。

runtime:编译不需要依赖项,但需要执行依赖项。它在运行时和测试类路径中,但不在编译类路径中。(servlet-api)   

test:测试时起作用. 只在编译测试代码和运行测试的时候需要,应用的正常运行不需要此类依赖。它不是传递的。(jdbc)     

system:系统依赖范围。该依赖与三种classpath的关系和provided依赖范围完全一致。

但 使用system范围的依赖时必须通过systemPath元素显式地指定依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植

3. Maven依赖传递原则

①最短路径原则(依赖传递的路径越短越优先)

②pom文件申明/引入顺序优先 先引入的优先级高于后引入的(路径长度一样,先申明的优先) 

③覆写原则(当前pom文件里申明的直接覆盖父工程传过来的)

注意 : 如果项目期待别人继承了,也看不到依赖的包,那就加上<optional> 

用别人的包 , 但是不全用, 用关键字排除不要的东西  <exclusion>

 <exclusions>
     <exclusion>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
     </exclusion>
 </exclusions>

4. maven依赖冲突及解决方案

source : maven依赖冲突以及解决方法 - Linyb极客之路 - 博客园

5.  Maven 的生命周期?

Maven 中有三个独立的生命周期, Clean 、Default、Site.

5. 聚合和继承的区别与联系 ?

聚合 : 管理项目 <packaging>pom<packaging>

继承 : 父工程里面的jar包,都只是定义,子工程里面,才是真正的引入,只是不需要写版本号,版本号由父工程统一来管理

作用:聚合用于快速构建项目; 继承用于快速配置

作用:聚合用于快速构建项目; 继承用于快速配置


6. 如何自动化部署平台搭建?


SpringMVC

重点: IOC 和 AOP , SpringMVC的执行流程.

1. MVC 设计思想 : 主要作用: 解耦

image.png

2. Spring MVC的优点:

(1)可以支持各种视图技术,而不仅仅局限于JSP;

(2)它是基于组件技术的。全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java组件.并且和Spring提供的其他基础结构紧密集成(如 IOC容器、AOP 等);

(3)清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver)。

(4) 支持各种请求资源的映射策略,易于扩展。
(5)不依赖于Servlet API (目标虽是如此,但是在实现的时候确实是依赖于Servlet的)
 

3. 基本配置文件的作用

1. springmvc.xml 配置文件的作用 : 

注解、扫描controller包注解;静态资源映射;视图解析(defaultViewResolver);文件上传(multipartResolver);返回消息json配置。

2. web.xml 配置文件的作用:

web.xml的加载:随Tomcat的启动而启动dispatcherServlet 类,从而加载文件Springmvc.xml

3. 建Springmvc 的步骤 :

image.png

4. 写拦截器的步骤:

image.png

4. SpringMVC 的主要执行组件 

九大基本组件:

🍀 注意 :  前端控制器 DispatcherServlet不是组件, 它的作用是: 处理所有的HTTP请求和响应结果.[相当于转发器],会减少组件间耦合度。

(1)处理器映射器HandlerMapping(不需要程序员开发),

作用:根据request的URL来查找相对应的Handler处理器。因为Handler(相当于Controller)有两种形式,一种是基于的Handler,另一种是基于方法Method的Handler(也就是我们常用的). 

(2)处理器适配器HandlerAdapter

注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。

🍀 关系 :Handler是用来干活的工具,HandlerMapping用于根据需要干的活找到相应的工具,HandlerAdapter是使用工具干活的人。

(3)视图处理器ViewResolver : 进行视图的解析 根据视图逻辑名解析成真正的视图(view). View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)

(4)处理器异常处理器 HandlerExceptionResolver

(5)RequestToViewNameTranslator

(6)LocalResolver

(7)ThemeResolver

(8)MulitipartResolver

(9)FlashMapmanager

5. SpringMVC执行流程

image.png

(1) 用户发送请求至前端控制器DispatcherServlet;

(2)DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;

(3)处理器映射器根据请求url找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;

(4)DispatcherServlet通过HandlerAdapter处理器适配器调用处理器;

(5)HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器);

(6)Handler执行完成返回ModelAndView;

(7)HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;

(8)DispatcherServlet将ModelAndView传给ViewReslover视图解析器进行解析;

(9)ViewReslover解析后返回具体View;

(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)

(11)DispatcherServlet响应用户。

source : SpringMVC 组件类大全_xlxxcc的专栏-优快云博客_springmvc的组件

image.png

6. SpringMVC 注解 

source : 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值