框架
author: “\U0001F336 辣椒炒饭”
tags:

  • Spring
  • SpringMVC
  • SpringBoot
    categories:
  • 面试题
    date: 2023-03-04 18:21:00

框架
author: “\U0001F336 辣椒炒饭”
tags:

  • Spring
  • SpringMVC
  • SpringBoot
    categories:
  • 面试题
    date: 2023-03-04 18:21:00

框架
author: “\U0001F336 辣椒炒饭”
tags:

  • Spring
  • SpringMVC
  • SpringBoot
    categories:
  • 面试题
    date: 2023-03-04 18:21:00

# 谈一谈 Spring 框架。

一般来说,Spring 框架是指 Spring Framework,其核心的两个概念是 IoC(Inversion of Control: 控制反转)和 AOP(Aspect-Oriented-Programming:面向切面编程),优点是便于集成第三方组件(电子邮件,任务,调度,缓存等)

# Spring,Spring MVC,Spring Boot 之间的关系。

Spring 包含多个功能模块,最重要的就是 Spring-Core (作用是 IoC 依赖注入功能),Spring 的模块也依赖该模块,比如 Spring MVC

SpringMVC 提供快速的 MVC 架构能力,核心思想是通过把业务层,数据,显示分离来组织代码。

SpringBoot 简化了配置,可以做到开箱即用。

# 谈谈你对 Spring IoC 的理解。

IoC 控制反转,是一种设计思想,将手动创建对象的控制权交给 Spring 框架来管理,


其实依赖注入就是一个很明显的例子。

# 什么是 Spring Bean?

Bean 代指的就是那些被 IoC 容器所管理的对象。

# 将一个类声明为 Bean 的注解有哪些?

就是常用的几个 SpringBoot 注解

  • @Component: 通用注解,可标注任意类为 Spring 组件,如果一个 Bean 不知道属于哪个层,可以使用 @Component 注解。
  • @Repository: 对应持久即 Dao 层,主要用于数据库相关操作
  • @Serverice: 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
  • @Controller: 对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。

# @Component 和 @Bean 的区别是什么?

前者作用于是类,后者是方法。
@Compnonent 通常是通过类路径扫描来自动侦测以及自动装配到 Spring 容器中,@Bean 比 @Component 注解的自定义性强。

# 注入 Bean 的注解有哪些?

Spring 内置的 @Autowired 以及 JDK 内置的 @Resource 和 @Inject 都可以用于注入 Bean。

# @Autowired 和 @Resource 的区别是什么?

Autowired 属于 Spring 内置的注解,默认的注入方式 ByType,也就是说会优先根据接口类型去匹配并注入 Bean
(接口的实现类)

@Autowired 是 Spring 提供的注解。@Resource 是 JDK 提供的注解。前者是 ByType,后者是 ByName。

# Bean 的作用域有哪些?

  • singleton : IoC 容器中只有唯一的 bean 实例。Spring 中的 bean 默认都是单例的,是对单例设计模式的应用。
  • prototype : 每次获取都会创建一个新的 bean 实例。也就是说,连续 getBean () 两次,得到的是不同的 Bean 实例。
  • request (仅 Web 应用可用): 每一次 HTTP 请求都会产生一个新的 bean(请求 bean),该 bean 仅在当前 HTTP request 内有效。
  • session (仅 Web 应用可用) : 每一次来自新 session 的 HTTP 请求都会产生一个新的 bean(会话 bean),该 bean 仅在当前 HTTP session 内有效。
  • application/global-session (仅 Web 应用可用): 每个 Web 应用在启动时创建一个 Bean(应用 Bean),该 bean 仅在当前应用启动时间内有效。
  • websocket (仅 Web 应用可用):每一次 WebSocket 会话产生一个新的 bean。

# Spring Boot 中的监视器是什么?

SpringBoot actuator 是 Spring 启动框架中的重要功能之一。Spring Boot 监视器

# 什么时候需要给实体类序列化?

  1. 需要把内存中的对象状态数据保存在一个文件或者数据库中时
  2. 网络通信时把套接字在网络中传输对象时,使用 RPC 协议进行网络通信。

# 为什么 Java 类需要实现 Serializable 接口。

  1. 将对象持久化,把对象的字节序列永久的保存至硬盘上,通常为一个文件,允许我们在内存中创建可复用的 Java 对象。
  2. 网络传输对象,在网络上传输对象的字节系列。

#