首页 欧洲联赛正文

桃运狂医,Spring 那些最常见的面试问题:保藏,面试再也不怕Spring问题了,小鸡舞

  • 1. 一般问题
  • 1.1. 不同版别的 Spring Framework 有哪些首要功用?
  • 1.2. 什么是 Spring Framework?
  • 1.3. 罗列 Spring Framework 的长处。
  • 1.4. Spring Framework 有哪些不同的功用?
  • 1.5. Spring Framework 中有多少个模块,它们别离是什么?
  • 1.6. 什么是 Spring 装备文件?
  • 1.7. Spring 运用程序有哪些不同组件?
  • 1.8. 运用 Spring 有哪些办法?
  • 2. 依靠注入(Ioc)
  • 2.1. 什么是 Spring IOC 容器?
  • 2.2. 什么是依靠注入?
  • 2.3. 能够经过多少种办法完结依靠注入?
  • 2.4. 差异结构函数注入和 setter 注入。
  • 2.5. spring 中有多少种 IOC 容器?
  • 2.6. 差异 BeanFactory 和 ApplicationContext。
  • 2.7. 罗列 IoC 的一些长处。
  • 2.8. Spring IoC 的完结机制。
  • 3. Beans
  • 3.1. 什么是 spring bean?
  • 3.2. spring 供给了哪些装备办法?
  • 3.3. spring 支撑会集 bean scope?
  • 3.4. spring bean 容器的生命周期是什么样的?
  • 3.5. 什么是 spring 的内部 bean?
  • 3.6. 什么是 spring 安装
  • 3.7. 主动安装有哪些办法?
  • 3.8. 主动安装有什么限制?
  • 4. 注解
  • 4.1. 你用过哪些重要的 Spring 注解?
  • 4.2. 如安在 spring 中发动注解安装?
  • 4.3. @Component, @Controller, @Repository, @Service 有何差异?
  • 4.4. @Required 注解有什么用?
  • 4.5. @Autowired 注解有什么用?
  • 4.6. @Qualifier 注解有什么用?
  • 4.7. @RequestMapping 注解有什么用?
  • 5. 数据拜访
  • 5.1. spring DAO 有什么用?
  • 5.2. 罗列 Spring DAO 抛出的反常。
  • 5.3. spring JDBC API 中存在哪些类?
  • 5.4. 运用 Spring 拜访 Hibernate 的办法有哪些?
  • 5.5. 罗列 spring 支撑的事务办理类型
  • 5.6. spring 支撑哪些 ORM 结构
  • 6. AOP
  • 6.1. 什么是 AOP?
  • 6.2. AOP 中的 Aspect、Advice、Pointcut、JointPoint 和 Advice 参数别离是什么?
  • 6.3. 什么是告诉(Advice)?
  • 6.4. 有哪些类型的告诉(Advice)?
  • 6.5. 指出在 spring aop 中 concern 和 cross-cutting concern 的不同之处。
  • 6.6. AOP 有哪些完结办法?
  • 6.7. Spring AOP and AspectJ AOP 有什么差异?
  • 6.8. 怎么了解 Spring 中的署理?
  • 6.9. 什么是织造(Weaving)?
  • 7. MVC
  • 7.1. Spring MVC 结构有什么用?
  • 7.2. 描绘一下 DispatcherServlet 的作业流程
  • 7.3. 介绍一下 WebApplicationContext
  • 8. 材料

1. 一般问题

1.1. 不同版别的 Spring Framework 有哪些首要功用?

1.2. 什么是 Spring Framework?

  • Spring 是一个开源运用结构,旨在下降运用程序开发的复杂度。
  • 它是轻量级、松懈耦合的。
  • 它具有分层体系结构,答运用户挑选组件,一起还为 J2EE 运用程序开发供给了一个有凝聚力的结构。
  • 它能够集成其他结构,如 Structs、Hibernate、EJB 等,所以又称为结构的结构。

1.3. 罗列 Spring Framework 的长处。

  • 由于 Spring Frameworks 的分层架构,用户能够彭定山自由挑选自己需求的组件。
  • Spring Framework 支撑 POJO(Plain Old Java Object) 编程,然后具有继续集成和可测验性。bc拉用户
  • 由于依靠注入和操控回转,JDBC 得以简化。
  • 它是开源免费的。

1.4. Spring Framework 有哪些不同的功用?

  • 轻量级 - Spring 在代码量和透明度方面都很简便。
  • IOC - 操控回转
  • AOP - 面向切面编程能够将运用事务逻辑和体系服务别离,以完结高内聚。
  • 容器 - Spring 担任创立和办理方针(Bean)的生命周期和装备。
  • MVC - 对 web 运用供给了高度可装备性,其他结构的集成也十分便利永和宫主txt。
  • 事务办理 - 供给了用于事务办理的通用笼统层。Spring 的事务支撑也可用于容器较少的环境。
  • JDBC 反常 - Spring 的 JDBC 笼统层供给了一个反常层次结构,简化了错误处理战略。

1.5. Spring Framework 中有多少个模块,它们别离是什么?



Spring 中心容器 – 该层根本上是 Spring Framework 的中心。它包含以下模块:

  • Spring Core
  • Spring Bean
  • SpEL (Spring Expression Language)
  • Spring Context


数据拜访/集成 – 该层供给与数据库交互的支撑。它包含以下模块:

  • JDBC (Java DataBase Connectivity)
  • ORM (Object Relational Mapping)
  • OXM (Object XML Mappers)
  • JMS (Java Messaging Service)
  • Transaction


Web – 该层供给了创立 Web 运用程序的支撑。它包含以下模块:

  • Web
  • Web – Servlet
  • Web – Socket
  • Web – Portlet
  • AOP – 该层支撑面向切面编程
  • Instrumentation – 该层为类检测和类加载器完结供给支撑。
  • Test – 该层为运用 JUnit 和 TestNG 进行测验供给支撑。


几个杂项模块:

  • Messaging – 该模块为 STOMP 供给支撑。它还支撑注解编程模型,该模型用于从 WebSocket 客户端路由和处理 STOMP 音讯。
  • Aspects – 该模块为与 AspectJ 的集成供给支撑。

1.6. 什么是 S桃运狂医,Spring 那些最常见的面试问题:保藏,面试再也不怕Spring问题了,小鸡舞pring 装备文件?

Spring 装备文件是 XML 文件。该文件首要包含类信息。它描绘了这些类是怎么装备以及彼此引进的。可是,XML 装备文件冗长且愈加洁净。假如没有正确规划和编写,那么在大项目中办理变得十分困难。

1.7. Spring 运用程序有哪些不同组件?

Spring 运用一般有以下组件:

  • 接口 - 界说功用。
  • Bean 类 - 它包含特点,setter 和 getter 办法,函数等。
  • Spring 面向切面编程(AOP) - 供给面向切面编程的功用。
  • Bean 装备文件 - 包含类的信息以及怎么装备它们。
  • 用户程序 - 它运用接口。

1.8. 运用 Spring 有哪些办法?

运用 Spring 有以下办法:

  • 作为一个老练的 Spring Web 运用程序。
  • 作为第三方 Web 结构,运用 Spring Frameworks 中间层。
  • 用于长途运用。
  • 作为企业级 Java Bean,它能够包装现有的 POJO(Plain Old Java Objects)姚庆德。

2. 依靠注入(Ioc)

2.1. 什么是 Spring IOC 容器?

Spring 结构的中心是 Spring 容器。容器创立方针,将它们安装在一起,装备它们并办理它们的完好生命周期。Spring 容器运用依靠注入来办理组成运用程序的组件。

容器经过读取供给的装备元数据来接纳方针进行实例化,装备和拼装的指令。该元数据能够经过 XML,Java 注解或 Java 代码供给。



2.2. 什么是依靠注入?

在依靠注入中,您不用创立方针,但有必要描绘怎么创立它们。您不是直接在代码中将组件和服务衔接在一起,而是描绘装备文件中哪些组件需求哪些服务。由 IoC 容器将它们安装在一起。

2.3. 能够经过多少种办法完结依靠注入?

一般,依靠注入能够经过三种办法完结,即:

  • 结构函数注入
  • setter 注入
  • 接口注入

在 Spring Framework 中,仅运用结构函数和 setter 注入。

2.4. 差异结构函数注入和 setter 注入。

2.5. spring 中有多少种 IOC 容器?

  • BeanFactory - BeanFactory 就像一个包含 bean 调集的工厂类。它会在客户端要求时实例化 bean。
  • ApplicationContext - ApplicationContext 接口扩展了 BeanFactory 接口。它在 BeanFactory 基础上供给了一些额定的功用。

2.6. 差异 BeanFactory 和 ApplicationContext。

2.7. 罗列 IoC 的一些长处。

IoC 的一些长处是:

  • 它将最小化运用程序中的代码量。
  • 它将使您的运用程序易于测验,由于它不需求单元测验用例中的任何单例或 JNDI 查找机制。
  • 它以最小的影响和最少的侵入机制促进松耦合。
  • 它支撑即时的实例化和推迟加载服务。

2.8. Spring IoC 的完结机制。

Spring 中的 IoC 的完结原理便是工厂方式加反射机制。

示例:

interface Fruit {
public abstract void eat();
}
class Apple implements Fruit {
public void e曾骥天士力at(){
System.out.println("Apple");
}
}
class Orange implements Fruit {
public void eat(){
System.out.println("Orange");
}
}
class Factory {
public static Fruit getInstance(String ClassNam桃运狂医,Spring 那些最常见的面试问题:保藏,面试再也不怕Spring问题了,小鸡舞e) {
Fruit f=null;
try {
f=(Fruit)Class.forName(ClassName).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return f;
}
}
class Client {
public static void main(String[] a) {
Fruit f=Factory.ge舔乳tInstance("io.github.dunwu.spring.Apple");
if(f!=null){
f.eat();
}
}
}

3. Beans

3.1. 什么是 spring bean?

  • 它们是构成用户运用程序骨干的方针。
  • Bean 由 Spring IoC 容器办理。
  • 它们由 Spring IoC 容器实例化,装备,安装和办理。
  • Bean 是依据用户供给给容器的装备元数据创立。

3.2. spring 供给了哪些装备办法?

  • 依据 xml 装备

bean 所需的依靠项和服务在 XML 格局的装备文件中指定。这些装备文件一般包含许多 bean 界说和特定于运用程序的装备选项。它们一般以 bean 标签最初。例如:





  • 依据注解装备

您能够经过在相关的类,办法或字段声明上运用注解,将 bean 装备为组件类本身,而不是运用 XML 来描绘 bean 安装。默许情况下,Spring 容器中未翻开注解安装。因而,您需求在运用它之前在 Spring 装备文件中启用它。例如:






  • 依据 Java API 装备

Spring 的 Java 装备是经过运用 @Bean 和 @Configuration 来完结。

  1. @Bean 注解扮演与 元素相同的人物。
  2. @Configuration 类答应经过简略地调用同一个类中的其他 @Bean 办法来界说 bean 间依靠联系。

例如:

@Configuration
public class StudentConfig {
@Bean
public StudentBean myStudent() {
return new StudentBean();
}
}

3.3. spring 支撑会集 bean scope?

Spring bean 支撑 5 种 scope:

  • Singleton - 每个 Spring IoC 容器仅有一个单实例。
  • Prototype - 每次恳求都会发生一个新的实例。
  • Request - 每一次 HTTP 恳求都会发生一个新的实例,而且该 bean 仅在当时 HTTP 恳求内有效。
  • Session - 每一次 HTTP 恳求都会发生一个新的 bean,一起该 bean 仅在当时 HTTP session 内有效。
  • Global-session - 相似于愈组词标准的 HTTP Session 效果域,不过它仅仅在依据 portlet 的 web 运用中才有含义。Portlet 标准界说了大局 Session 的概念桃运狂医,Spring 那些最常见的面试问题:保藏,面试再也不怕Spring问题了,小鸡舞,它被一切构成某个 portlet web 运用的各种不同的 portlet 所同享。在 global sessionnh962 效果域中界说的 bean 被限定于大局 portlet Session 的生命周期规模内。假如你在 web 中运用 global session 效果域来标识 bean,那么 web 会主动当成 session 类型来运用。

仅当用户运用支撑 Web 的 ApplicationContext 时,最终三个才可用。更多spring内容,能够看这儿:Spring内容合集

3.4. spring bean 容器的生命周期是什么样的?

spring bean 容器的生命周期流程如下:

  1. Spring 容器依据装备中的 bean 界说中实例化 bean。
  2. Spring 运用依靠注入填充一切特点,如 bean 中所界说的装备。
  3. 假如 bean 完结 BeanNameAware 接口,则工厂经过传递 bean 的 ID 来调用 setBeanName()。
  4. 假如 bean 完结 BeanFactoryAware 接口,工厂经过传递本身的实例来调用 setBeanFactory()。
  5. 假如存在与 bean 相关的任何 BeanPostProcessors,则调用 preProcessBeforeInitialization() 办法。
  6. 假如为 bean 指定了 init 办法( 的 init-method 特点),那么将调用它。
  7. 最终,假如存在与 bean 相关的任何 BeanPostProcessors,则将调用 postProcessAfterInitialization() 办法。
  8. 假如 bean 完结 DisposableBean 接口,当 spring 容器封闭时,会调用 destory()。
  9. 假如为 bean 指定了 destroy 办法( 的 destroy-method 特点),那么将调用它。



3.5. 什么是 spring 的内部 bean?

只要将 bean 用作另一个 bean 的特点时,才能将 bean 声明为内部幻舞移行 bean。为了界说 bean,Spring 的依据 XML 的装备元数据在 中供给了 元素的运用。内部 bean 总是匿名的,它们总是作为原型。

例如,假定咱们有一个 Student 类,其间引证了 Person 类。这儿咱们将只创立一个 Person 类实例并在 Student 中运用它。

Student.java

public class Student {
private Person person;
//Setters and Getters
}
public class Person {
private String name;
private String address;
//Setter桃运狂医,Spring 那些最常见的面试问题:保藏,面试再也不怕Spring问题了,小鸡舞s and Getters
}

bean.xml










3.6. 什么是 spring 安装

当 bean 在 Spring 容器中组合在一起时,它被称为安装或 bean 安装。Spring 容器需求知道需求什么 bean 以及容器应该怎么运用依靠注入来将 bean 绑定在一起,一起安装 bean。

3.7. 主动安装有哪些办法?

Spring 容器能够主动安装 bean。也便是说,能够经过查看 BeanFactory 的内容让 Spring 主动解析 bean 的协作者。更多spring内容,能够看这儿:Spring内容合集

主动安装的不同方式:

  • no - 这是默许设置,表明没有主动安装。应运用显式 bean 引证进行安装114家服网。
  • byName - 它依据 bean 的称号注入方针依靠项。它匹配并安装其特点与 XML 文件中由相同称号界说的 bean。
  • byType - 它依据类型注入方针依靠项。假如特点的类型与 XML 文件中的一个 bean 称号匹配,则匹配并安装特点。
  • 结构函数 - 它经过调用类的结构函数来注入依靠项。它有很多的参数。
  • autodetect - 首要容器测验经过结构函数运用 autowire 安装,假如不能,则测验经过 byType 主动安装。

3.8. 主动安装有什么限制?

  • 掩盖的可能性 - 您一直能够运用 和 设置指定依靠项,这将覆桃运狂医,Spring 那些最常见的面试问题:保藏,面试再也不怕Spring问题了,小鸡舞盖主动安装。
  • 根本元数据类型 - 简略特点(如原数据类型,字符串和类)无法主动安装。
  • 令人困惑的性质 - 总是喜爱运用清晰的安装,由于主动安装不太精确。

4. 注解

4.1. 你用过哪些重要的 Spring 注解?

  • @Controller - 用于 Spring MVC 项目中的操控器类。
  • @Service - 用于服务类。
  • @RequestMapping - 用于在操控器处理程序办法中装备 URI 映射。
  • @ResponseBody - 用于发送 Object 作为呼应,一般用于发送 XML 或 JSON 数据作为呼应。
  • @美奴PathVariable - 用于将动态值从 URI 映射到处理程序办法参数。
  • @Autowired - 用于在 spring bean 中主动安装依靠项。
  • @Qualifier - 运用 @Autowired 注解,以防止在存在多个 bean 类型实例时呈现混杂。
  • @Scope - 用于装备 spring bean 的规模。
  • @Configuration@ComponentScan@Bean - 用于依据 java 的装备。
  • @Aspect@Before@After@Around@Pointcut - 用于切面编程(AOP)。

4.2. 如安在 spring 中发动注解安装?

默许情况下,Spring 容器中未翻开注解安装。因而,要运用依据注解安装,咱们有必要经过装备 元素在 Spring 装备文件中启用它。

4.3. @Component, @Controller, @Repository, @Service 有何差异?

  • @Component:这将 java 类符号为 bean。它是任何 Spring 办理组件的通用结构型。spring 的组件扫描机制现在能够将其拾取并将其拉入运用程序环境中。
  • @Controller:这将一个类符号为 Spring Web MVC 操控器。标有它的 Bean 会主动导入到 IoC 容器中。
  • @Service:此注解是组件注解的特化。它不会对 @Component 注解供给任何其他行为。您能够在服务层类中运用 @Service 而不是 @Component,由于它以更好的办法指定了目的。
  • @Repository:这个注解是具有相似用处和功用的 @Component 注解的特化。它为 DAO 供给了额定的长处。它将 DAO 导入 IoC 容器,并使未经查看的反常有冷云竹资历转化为 Spring DataAccessException。

4.4. @Required 注解有什么用?

@Required 运用于 bean 特点 setter 办法。此注解仅指示有必要在装备时运用 bean 界说中的显式特点值或运用主动安装填充受影响的 bean 特点。假如没有填充受影响的 bean 特点,则容器将抛出 BeanInitializationException。

示例:

public class Employee {
private String name;
@孙兴老婆Required
public void setName(String name){
this.name=name;
}
public string getName(){
return name;
}
}

4.5. @Autowired 注解有什么用?

@Autowired 能够更精确地操控应该在何处以及怎么进行主动安装。此注解用于在 setter 办法,结构函数,具有恣意称号或多个参数的特点或办法上主动安装 bean。默许情况下,它是类型驱动的注入。

public class Employee {
private String name;
@Autowired
public void setName(String name) {
this.name=name;
}
public string getName(){
return name;
}
}

4.6. @Qualifier 注解有什么用?

当您创立多个相同类型的 bean 并期望仅运用特点安装其间一个 bean 时,您能够运用@Qualifier 注解和 @Autowired 经过指定应该安装哪个切当的亿万宝宝老公不担任 bean 来消除歧义。

例如,这儿咱们别离有两个类,Employee 和 EmpAccount。在 EmpAccount 中,运用@Qualifier 指定了有必要安装 id 为 emp1 的 bean。

Employee.java

public class Employee {
private String name;
@Autowired
public void setName(String name) {
this.name=name;
}
public string getName() {
return name;
}
}

EmpAccount.java

public class EmpAccount {
private Employee emp;
@Autowired
@Qualifier(emp1)
public void showName() {
System.out.println(“Employee name : ”+emp.getName);
}
}

4.7. @RequestMapping 注解有什么用?

@RequestMapping 注解用于将特定 HTTP 恳求办法映射到将处理相应恳求的操控器中的特定类/办法。此注解可运用于两个等级:

  • 类等级:映射恳求的 URL
  • 办法等级:映射 URL 以及 HTTP 恳求办法


5桃运狂医,Spring 那些最常见的面试问题:保藏,面试再也不怕Spring问题了,小鸡舞. 数据拜访

5.1. spring DAO 有什么用?

Spring DAO 使得 JDBC,Hibernate 或 JDO 这样的数据拜访技能更简单以一种一致的办法作业。这使得用户简单在持久性技能之间切换。它还答应您在编写代码时,无需考虑捕获每种技能不同的反常。更多spring内容,能够看这儿:Spring内容合集

5.2. 罗列 Spring DAO 抛出的反常。



5.3. spring JDBC API 中存在哪些类?

  • JdbcTemplate
  • SimpleJdbcTemplate
  • NamedParameterJdbcTemplate
  • SimpleJdbcInsert
  • SimpleJdbcC刘大心all

5.4. 运用 Spring 拜访 Hibernate 的办法有哪些?

咱们能够经过两种办法运用 Spring 拜访 Hibernate:

  1. 运用 Hibernate 模板和回调进行操控回转
  2. 扩展 HibernateDAOSupport 并运用 AOP 拦截器节点

5.5. 罗列 spring 支撑的事务办理类型

Spring 支撑两种类型的事务办理:

  1. 程序化事务办理:在此过程中,在编程的协助下办理事务。它为您供给极大的灵敏性,但保护起来十分困难。
  2. 声明式事务办理:在此,事务办理与事务代码别离。仅运用注解或依据 XML 的装备来办理事务。

5.6. spring 支撑哪些 ORM 结构

  • Hibernate
  • iBatis
  • JPA
  • JDO
  • OJB

6. AOP

6.1. 什么是 AOP?

AOP(Aspect-Oriented Programming), 即 面向切面编程, 它与 OOP( Object-Oriented Programming, 面向方针编程) 相得益彰, 供给了与 OOP 不同的笼统软件结构的视角.

在 OOP 中, 咱们以类(class)作为咱们的根本单元, 而 AOP 中的根本单元是 Aspect(切面)

6.2. AOP 中的 Aspect、Advice、Pointcut、JointPoint 和 Advice 参数别离是什么?



  • Aspect - Aspect 是一个完结穿插问题的类,例如事务办理。方面能够是装备的一般类,然后在 Spring Bean 装备文件中装备,或许咱们能够运用 Spring AspectJ 支撑运用 @Aspect 注解将类声明为 Aspect。
  • Advice - Advice 是针对特定 JoinPoint 采纳的操作。在编程方面,它们是在运用程序中到达具有匹配切入点的特定 JoinPoint 时履行的办法。您能够将 Advice 视为 Spring 拦截器(Interceptor)或 Servlet 过滤器(filter)。
  • Advice Arguments - 咱们能够在 advice 办法中传递参数。咱们能够在切入点中运用 args() 表达式来运用于与参数方式匹配的任何办法。假如咱们运用它,那么咱们需求在确认参数类型的 advice 办法中运用相同的称号。
  • Pointcut - Pointcut 是与 JoinPoint 匹配的正则表达式,用于确认是否需求履行 Advice。Pointcut 运用与 JoinPoint受伤的玫瑰 匹配的不同类型的表达式。Spring 结构运用 AspectJ Pointcut 表达式言语来确认将运用告诉办法的 JoinPoint。
  • JoinPoint - JoinPoint 是运用程序中的特定点,例如办法履行,反常处理,更改方针变量值等。在 Spring AOP 中,JoinPoint 一直是办法的履行器。

6.3. 什么是告诉(Advice)?

特定 JoinPoint 处的 Aspect 所采纳的动作称为 Advice。Spring AOP 运用一个 Advice 作为拦截器,在 JoinPoint “周围”保护一系列的拦截器。

6.4. 有哪些类型的告诉(Advice)?

  • Before - 这些类型的 Advice 在 joinpoint 办法之前履行,并运用 @Before 注解符号进行装备。
  • After Returning - 这些类型的 Advice 在衔接点办法正常履行后履行,并运用@AfterReturning 注解符号进行装备。
  • After Throwing - 这些类型的 Advice 仅在 joinpoint 办法经过抛出反常退出并运用 @AfterThrowing 注解符号装备时履行。
  • After (finally) - 这些类型的 Advice 在衔接点办法之后履行,不管办法退出是正常仍是反常回来,并运用 @After 注解符号进行装备。
  • Around - 这些类型的 Advice 在衔接点之前和之后履行,并运用 @Around 注解符号进行装备。

6.5. 指出在 spring aop 中 concern温州医学院王静 和 cross-cutting concern 的不同之处。

concern 是咱们想要在运用程序的特定模块中界说的行为。它能够界说为咱们想要完结的功用。

cross-cutting concern 是一个适用于整个运用的行为,这会影响整个运用程序。例如,日志记载,安全性和数据传输是运用程序简直每个模块都需求重视的问题,因而它们是跨范畴的问题。

6.6. AOP 有哪些完结办法?

完结 AOP 的技能,首要分为两大类:

  • 静态署理 - 指运用 AOP 结构供给的指令进行编译,然后在编译阶段就可生成 AOP 署理类,因而也称为编译时增强;
  • 编译时织造(特别编译器完结)
  • 类加载时织造(特别的类加载器完结)。
  • 动态署理 - 在运行时在内存中“暂时”生成 AOP 动态署理类,因而也被称为肥肥的女儿运行时增强。
  • JDK 动态署理
  • CGLIB

6.7. Spring AOP and AspectJ AOP 有什么差异?

Spring AOP 依据动态署理办法完结;AspectJ 依据静态署理办法完结。

Spring AOP 仅支撑办法等级的 PointCut;供给了彻底的 AOP 支撑,它还支撑特点等级的 PointCut。

6.8. 怎么了解 Spring 中的署理?

将 Advice 运用于方针方针后创立的方针称为署理。在客户端方针的情况下,方针方针和署理方针是相同的。

Advice + Target Object = Proxy

6.9. 什么是织造(Weaving)?

为了创立一个 advice 方针而链接一个 aspect 和其它运用类型或方针,称为织造(Weaving)。在 Spring AOP 中,织造在运行时履行。请参阅下图:



7. MVC

7.1. Spring MVC 结构有什么用桃运狂医,Spring 那些最常见的面试问题:保藏,面试再也不怕Spring问题了,小鸡舞?

Spring Web MVC 结构供给 模型-视图-操控器 架构和随时可用的组件,用于开发灵敏且松懈耦合的 Web 运用程序。MVC 方式有助于别离运用程序的不同方面,如输入逻辑,事务逻辑和 UI 逻辑,一起在一切这些元素之间供给松懈耦合。

7.2. 描绘一下 DispatcherServlet 的作业流程

DispatcherServlet 的按着李娜作业流程能够用一幅图来阐明:



  1. 向服务器发送 HTTP 恳求,恳求被前端操控器 DispatcherServlet 捕获。
  2. DispatcherServlet 依据 -servlet.xml 中的装备对恳求的 URL 进行解析,得到恳求资源标识符(URI)。然后依据该 URI,调用 HandlerMapping 取得该 Handler 装备的一切相关的方针(包含 Handler 方针以及 Handler 方针对应的拦截器),最终以HandlerExecutionChain 方针的方式回来。
  3. DispatcherServlet 依据取得的Handler,挑选一个适宜的 HandlerAdapter。(附注:假如成功取得HandlerAdapter后,此刻将开端履行拦截器的 preHandler(…)办法)。
  4. 提取Request中的模型数据,填充Handler入参,开端履行Handler(Controller)。 在填充Handler的入参过程中,依据你的装备,Spring 将帮你做一些额定的作业:
  • HttpMessageConveter:将恳求音讯(如 Json、xml 等数据)转化成一个方针,将方针转化为指定的呼应信息。
  • 数据转化:对恳求音讯进行数据转化。如`String`转化成`Integer`、`Double`等。
  • 数据根式化:对恳求音讯进行数据格局化。如将字符串转化成格局化数字或格局化日期等。
  • 数据验证:验证数据的有效性(长度、格局等),验证成果存储到`BindingResult`或`Error`中。
  1. Handler(Controller)履行完结后,向 DispatcherServlet 回来一个 ModelAndView 方针;
  2. 依据回来的ModelAndView,挑选一个合适的 ViewResolver(有必要是现已注册到 Spring 容器中的ViewResolver)回来给DispatcherServlet。
  3. ViewResolver 结合Model和View,来烘托视图。
  4. 视图担任将烘托成果回来给客户端。

7.3. 介绍一下 WebApplicationContext

WebApplicationContext 是 ApplicationContext 的扩展。它具有 Web 运用程序所需的一些额定功用。它与一般的 ApplicationContext 在解析主题和决议与哪个 servlet 相关的才能方面有所不同。

8. 材料

https://www.edureka.co/blog/interview-questions/spring-interview-questions/

https://www.journaldev.com/2696/spring-interview-questions-and-answers

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。