目录
- JavaWeb三大组件
- 依赖注入的方式
- @Autowire和@Resurce有什么区别?
- Spring Boot的优点
- Spring IoC是什么?
- 说说Spring Aop的优点
- @Component和@Bean的区别
- 自定义注解时使用的RetentionPolicy枚举类有哪些值?
- Spring Boot自动装配原理
- Spring MVC工作原理
JavaWeb三大组件
-
Servlet
:Servlet是JavaWeb应用程序中处理请求和生成响应的基本组件。它是一个Java类,通过实现或继承Servlet接口来处理客户端请求,并生成响应数据。 -
Listener
:监听器用于监听Web应用程序中的事件,并在事件发生时执行相应的逻辑处理。使用场景:
- 初始化
- 释放资源
- 日志记录
-
Filter
:过滤器用于在请求和响应的处理过程中对数据进行拦截和处理。一个请求可以经过多个过滤器的处理,每个过滤器可以在请求的处理前后进行操作和拦截。使用场景:
- 权限验证
- 请求转发
- 日志记录
- 字符编码
总结而言
- Servlet程序用于处理请求和生成响应数据
- Listener监听器用于监听特定的Web应用程序事件执行相应逻辑
- Filter过滤器用于对请求和响应数据进行拦截和处理。
它们各自在Web应用程序开发中具有重要的作用,能够实现灵活的请求处理、事件监听和数据过滤。
依赖注入的方式
在 Spring 中实现依赖注入的常见方式有以下 3 种:
- 属性注入(Field Injection)
- @Autowire实现属性注入
- @Resurce实现属性注入
- Setter 注入(Setter Injection)
- 构造方法注入(Constructor Injection)
@Autowire和@Resurce有什么区别?
-
autowire是Spring提供的;resource是J2EE提供的
-
resource默认使用name装配,当找不到name时,会按类型装配
-
AutoWire默认按类型装配,如果要使用名称装配可以用@Qualifier结合使用
Spring Boot的优点
-
开箱即用
通过在pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期
-
约定优于配置
约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需要的配置。
-
内置tomcat
Spring IoC是什么?
IoC(Inversion of Control:控制反转) 是一种设计思想,而不是一个具体的技术实现,IoC 的思想就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理。
-
为什么叫控制反转?
控制:指的是对象创建(实例化、管理)的权力
反转:控制权交给外部环境(Spring 框架、IoC 容器) -
Spring IoC的实现机制:工厂模式+反射机制
说说Spring Aop的优点
- 减少系统的重复代码
- 降低模块间的耦合度
- 封装切面逻辑
@Component和@Bean的区别
-
@Component 注解用在类上,表明一个类会作为组件类,并告知Spring要为这个类创建bean,每个类对应一个 Bean。
-
@Bean 注解用在方法上,表示这个方法会返回一个 Bean。
-
@Bean 注解更加灵活,相比@Component注解自定义性更强
自定义注解时使用的RetentionPolicy枚举类有哪些值?
值 | 源代码 | 类文件 | 虚拟机 |
---|---|---|---|
SOURCE | ✔️ | ||
CLASS | ✔️ | ✔️ | |
RUNTIME | ✔️ | ✔️ | ✔️ |
当值设为SOURCE
,只有源文件中可以看到注解
当值设为CLASS
,可在源文件和编译后的Class文件中可以看到注解
当值设为RUNTIME
,不仅在源文件和编译后的Class文件中可以看到注解,JVM还能通过反射机制获取到注解
Spring Boot自动装配原理
Spring Boot自动装配如下图所示:
-
@EnableAutoConfiguration主要由 @AutoConfigurationPackage,@Import(AutoConfigurationImportSelector.class)这两个注解组成的。
-
@AutoConfigurationPackage用于将启动类所在的包里面的所有组件注册到spring容器。
-
流程说明(重要):
- Import 将AutoConfigurationImportSelector注入到spring容器中
- AutoConfigurationImportSelector通过SpringFactoriesLoader从类路径下去读取META-INF/spring.factories文件信息
- 此文件中有一个key为org.springframework.boot.autoconfigure.EnableAutoConfiguration,定义了一组需要自动配置的bean
Spring MVC工作原理
Spring MVC 原理如下图所示:
- 流程说明(重要):
- 客户端(浏览器)发送请求, DispatcherServlet拦截请求。
- DispatcherServlet 根据请求信息调用 HandlerMapping 。HandlerMapping 根据 URL 去匹配查找能处理的 Handler(也就是我们平常说的 Controller 控制器) ,并会将请求涉及到的拦截器和 Handler 一起封装。
- DispatcherServlet 调用 HandlerAdapter适配器执行 Handler 。
- Handler 完成对用户请求的处理后,会返回一个 ModelAndView 对象给DispatcherServlet,ModelAndView 顾名思义,包含了数据模型以及相应的视图的信息。Model 是返回的数据对象,View 是个逻辑上的 View。
- ViewResolver 会根据逻辑 View 查找实际的 View。
- DispaterServlet 把返回的 Model 传给 View(视图渲染)。
- 把 View 返回给请求者(浏览器)