Spring相关框架大总结

157 阅读6分钟

1、Spring

1、Spring基础

  1. Spring框架了解吗?
    • 轻量级,开箱即用。旨在提高开发效率、系统可维护性。
    • 主要模块:核心容器(Core Container)、数据访问/集成(Data Access/Integeration)、Web(包含Spring MVC)、AOP、工具(Instrument)、消息(Messaging)、测试(Test)等。
  2. Spring的优缺点
    • 优点:轻量级(2MB)、控制反转(实现解耦合)、面向切面(业务逻辑与系统服务分离)、MVC框架、容器(管理对象生命周期和配置)、事务管理、异常处理
    • 缺点:使用大量反射框架,非常占内存。(1)重量级框架;(2)集成复杂;(3)配置复杂...
  3. Spring,Spring MVC,Spring Boot之间的关系
    • Spring MVC是Spring中的模块,帮助Spring快速构建MVC架构的Web程序。
    • Spring Boot旨在简化Spring开发(减少配置文件)

2、Spring IoC、AOP

IoC

  1. 能说一下IoC(Inversion of Control)的设计模式吗?
    • 一种设计思想而非具体实现。将手动创建对象的控制权(控制)交给Spring(反转)。
    • IoC容器管理对象之间的相互依赖关系,完成对象的注入。(创建对象只需配置文件/注解即可,不用考虑对象如何被创建的)
    • 优点:降低代码耦合度、提高代码可测试性、复用性、灵活性
  2. IoC原理
    • 工厂模式+反射机制
  3. 什么是Spring Bean?
    • IoC容器管理的对象。
    • Spring提供了三种方式来配置IoC容器中的bean:(1)基于xml文件;(2)基于注解;(3)基于注解+java代码显示配置
  4. 将一个类声明为Bean的注解有哪些?
    • @Component
    • @Repository
    • @Service
    • @Controller
  5. 什么数据结构存储Spring给我们管理的bean?
    • 默认为HashMap,"Bean名称-Bean实例" 对应 "key-value"(Bean存储在BeanFactory容器中)
  6. @Component 和 @Bean 的区别是什么?
    • @Component在类上使用,表明这个类是个组件类,需要Spring为这个类创建bean。
    • @Bean在方法上使用,告诉Spring这个方法将会返回一个Bean对象,需要把返回的对象注册到Spring的应用上下文中。
    • (bean更灵活,但需要自己实现动态逻辑。component由容器管理,但是省事一些)
  7. 注入Bean的注解有哪些?
    • @Autowired、@Resource、@Inject
  8. bean的几种注入(创建)方式
    • 使用构造器创建Bean实例、使用静态工厂方法创建Bean、调用实例工厂方法创建Bean
  9. @Autowired 和 @Resource 的区别是什么?
    • @Autowired是Spring提供,@Resource是JDK提供
    • @Autowired注入方式为byType,@Resource注入方式为byName
    • ...
  10. Bean的作用域有哪些?
    • singleton
    • prototype
    • request
    • session
    • application/global-session
    • websocket
    • 补充:配置bean作用域的方式:1)xml方式;2)注解方式
  11. 单例Bean的线程安全问题了解吗?
  12. Bean的生命周期了解吗?
  13. Spring的工作流程

AOP

  1. 谈谈你对Spring AOP的理解?
    • 是一种通过 预编译方式运行期动态代理 的方式实现程序动态统一添加功能的技术。所谓切面,就是将那些与业务逻辑无关的公共功能(比如日志记录、事务处理等)分离出来形成一个个独立的切面(Aspect),然后在程序运行时将这些切面动态地应用到业务逻辑中
    • 实现方式:JDK动态代理、CGLib动态代理
  2. AOP实现类
    • 通知(Advice)、切点(Pointcut)、切面(Aspect)、连接点(Join Point)、织入(Weaving)、目标(target)、代理(Proxy)
  3. AOP中有哪几种设计模式?怎么实现的?
  4. Spring AOP 和 AspectJ AOP有什么区别?
  5. JDK代理和CGLib代理的区别?
  6. 你的项目有没有使用AOP?

3、Spring MVC

  1. 说一下你对Spring MVC的理解
    • 通过将业务逻辑、数据、显示分离来组织代码,轻量级Web框架
    • 通过注解,让Java类成为处理请求的控制器而无需实现任何接口
  2. Spring MVC的优点?
    • 与Spring集成使用方便、配置简单易上手、支持RESTful风格、支持各种视图
  3. Spring MVC核心组件有哪些?
    • 前端控制器(DispatcherServlet)
    • 处理器映射器(HandlerMapping)
    • 处理器适配器(HandlerAdapter)
    • 处理器(Handler)
    • 视图解析器(ViewResolver)
    • 视图(View)
  4. Spring MVC工作原理了解吗?

image.png

  1. 统一异常怎么处理?
    • 使用注解。@ControllerAdvice + @ExceptionHandler
  2. Spring MVC常用注解有哪些?
    • @Controller、@RequestMapping、@ResponseBody、@RequestBody、@PathVariable、@RestController、@ExceptionHandler
  3. 介绍下Spring MVC拦截器
    • 对应HandlerInterceor接口
  4. Spring MVC怎么配置拦截器
  5. SpringMVC的拦截器和Filter过滤器有什么差别?

4、Spring事务

  1. Spring管理事务的方式有几种?
    • 编程式事务
    • 声明式事务
  2. Spring 事务中哪几种事务传播行为?
  3. Spring 事务中的隔离级别有哪几种?
  4. @Transactional(rollbackFor = Exception.class)注解了解吗?

2、Spring Boot

  1. 什么是Spring Boot?
    • 简化Spring。不再依赖Spring中的xml配置。“习惯优于配置”
  2. Spring Boot的优缺点?
    • 优点:快速的构建能力、起步依赖、内嵌容器支持、易于维护、易于部署(内置servlet)
    • 缺点:学习成本、过度封装、运行时占用资源、版本更新频繁
  3. 什么是SpringBoot Starter?
    • 简化配置。解决的是依赖管理配置复杂的问题。构建Web程序加spring-boot-starter-web。想引入持久化功能加spring-boot-starter-data-jpa
  4. SpringBoot常用的Start有哪些?
  5. 运行SpringBoot有哪几种方式?
  6. SpringBoot的核心注解是哪个? -@SpringBootApplication
  7. @Value注解的原理
  8. SpringBoot需要独立的容器运行吗?
    • 不需要,内置了Tomcat/Jetty等容器
  9. SpringBoot支持哪些日志框架?
    • Java Util Logging, Log4j2, Lockback
  10. Spring Boot常用的两种配置文件(yaml配置的优势在哪里?)
    • properties、yaml
    • yaml优势:配置有序、支持数组、简洁

3、Spring MVC

  1. 说一下你对Spring MVC的理解?
    • 轻量级web框架
    • 核心思想:通过将业务逻辑、数据、显示分离来组织代码
    • 通过一套注解,让一个简单的Java类成为处理请求的控制器,而无须实现任何接口;支持restful风格
  2. SpringMVC有哪些优点?
    • 与Spring集成使用方便,生态好
    • 配置简单,快速上手
    • 支持restful风格
    • 支持各种视图技术,支持各种请求资源映射策略
  3. Spring MVC的核心组件有哪些?
    • 前端控制器(DispatcherServlet)、处理器映射器(HandlerMapping)、处理器适配器(HandlerAdapter)、处理器(Handler)、视图解析器(ViewResolver)、视图(View)
  4. Spring MVC工作原理(执行流程)了解吗?
    • 快速记忆技巧:核心控制器捕获请求、查找Handler、执行Handler、选择ViewResolver,通过ViewResolver渲染视图并返回
  5. 统一异常怎么处理?
    • 使用注解。@ControllerAdvice + @ExceptionHandler
  6. SpringMVC常用注解有哪些?
    • @Controller、@ResponseBody、@RequestBody、@PathVariable、@RestController: @Controller+@ResponseBody、@ExceptionHandler
  7. 介绍下SpringMVC拦截器
  8. SpringMVC怎么配置拦截器?
    • 定义的Interceptor类要实现HandlerInterceptor接口;
    • 继承适配器类,接着在接口方法当中,实现处理逻辑;然后在SpringMvc的配置文件中配置拦截器
  9. SpringMVC的拦截器和Filter过滤器有什么差别?