目录

  • SSM、SpringBoot
  • Spring Boot
  • 1、怎么理解Spring Boot中的“约定大于配置”?
  • 2、SpringBoot的优势?
  • 3、SpringBoot项目启动流程
  • 4、SpringApplication中的静态方法run方法内部做了什么?
  • 5、Spring Boot的自动配置
  • 6、SpringBoot自动装配过程
  • 7、注解
  • Spring
  • 1、Spring的核心
  • 2、对Spring容器的理解
  • 3、Bean实例注入方式
  • 4、Spring如何配置Bean
  • 5、管理Bean常用注解
  • 6、Bean的作用域
  • 7、Bean的声明周期
  • 8、怎么解决循环依赖
  • 9、Spring默认提供的单例Bean时线程安全的吗
  • 10、SpringAOP多种实现方式
  • 11、怎么理解Spring的“事务传播”
  • SpringMVC
  • 1、SpringMVC的执行流程


SSM、SpringBoot

Spring Boot

1、怎么理解Spring Boot中的“约定大于配置”?

总结来说,约定大于配置就是一种开发原则,就是为了减少人为的配置,能使用默认配置就使用默认配置,默认配置其实就是所谓的“约定”。当存在特殊需求的时候,我们再自行自定义配置覆盖掉默认配置即可,这样就可以大大的减少配置工作,提高我们的工作效率。

和我们之前使用的SpringMVC作比较:配置前端控制器、视图解析器、Tomcat等

2、SpringBoot的优势?

快速构建项目,开发即用

3、SpringBoot项目启动流程

刚开始使用开发工具创建SpringBoot项目后会自动生成一个名为:项目名+Application 的一个入口类(也就是我们所说的主启动类),执行主启动类中的main方法,main方法中调用SpringApplication中的静态方法run方法,通过run方法来进行SpringApplication类的实例化操作,再根据实例化的类对象调用另一个run方法来进行项目的启动和初始化。

4、SpringApplication中的静态方法run方法内部做了什么?

获取和启动监听器

初始化,打印Banner图标

创建并初始化容器

监听器通知容器启动和运行

5、Spring Boot的自动配置

通过@EnableConfiguration开启自动配置功能,进入注解-AutoConfigurationImportSelector.class-getCandidateConfiguration方法-loadFactoryNames方法-loadSpring-loadSpringFactories方法-spring.factory

总结:SpringBoot项目启动时,在EnableConfiguration注解的作用下会获取类路径下META-INF/spring.factory的所有配置信息,将这些配置信息导入容器,自动配置就会生效

6、SpringBoot自动装配过程

整个自动装配流程:通过@EnableConfiguration注解来扫描类路径下的spring.factory配置文件,来注册各种XxAutuConfigure类,当某个XxAutuConfigure类的注解@Condition满足条件时,就会实例化这个类定义的组件(或Bean)注入到容器中。

7、注解

Spring

1、Spring的核心

ioc

aop

2、对Spring容器的理解

BeanFactory:懒加载

ApplicationContext:完成所有初始化

3、Bean实例注入方式

构造函数

set方法

java配置类

注意:Bean的自动装配是使用的:@Autowired注解

4、Spring如何配置Bean

xml配置

注解配置

5、管理Bean常用注解

@Compoentscan注解用来扫描指定包下的注解

@Scope注解

6、Bean的作用域

7、Bean的声明周期

@PostConstruct

@PreDestroy

8、怎么解决循环依赖

一级缓存:单例池

二级缓存:存放代理对象

三级缓存:存放普通对象

9、Spring默认提供的单例Bean时线程安全的吗

不是

10、SpringAOP多种实现方式

jdk动态代理

cglib动态代理

11、怎么理解Spring的“事务传播”

假如在一个业务方法内部调用了另一个业务(拥有事务),那么外来业务方法的事务怎么处理/传播

SpringMVC

1、SpringMVC的执行流程

  • SpringMVC的前端控制中心,DisPatcherServlet前端控制器拦截匹配的请求
  • DispatcherServlet将拦截的请求信息传递给处理器映射器(HandlerMapping)处理器映射器根据请求信息来找对应的处理器(Handler)
  • 将处理器信息返回给DispatcherServlet,DispatcherServlet将处理器信息传递给处理器适配器(HandlerAdapter),处理器适配器对Handler进行了封装并按照特定规则来执行Controller层中Handler指定的方法并将执行结果返回给DispatcherServlet
  • DispatcherServlet再根据视图解析器 (ViewResolver)来解析处理器适配器返回的视图逻辑名和模型数据来得到真实的视图对象并返回给DispatcherServlet
  • 最后DispatcherServlet根据返回的真实的视图对象来调用具体的视图并进行渲染
  • Mybatis