Spring Boot相关知识

简单介绍一下Spring?有什么缺点?

Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象实现了EJB的功能。

缺点:虽然Spring的组件代码是轻量级的,但他的配置却是重量级的(需要大量xml配置),除此之外,相关库的依赖、版本冲突也非常常见。

为什么要有Spring Boot?

Spring Boot旨在简化Spring的开发。

什么是Spring Boot Staters?

Spring Boot Staters是一系列依赖关系的集合,因为它的存在,项目的依赖关系对我们来说变得更加简单了。

Spring Boot支持哪些内嵌Servlet容器?

1.Tomcat 9.0

2.Jetty 9.4

3.Undertow 2.0

@SpringBootApplication注解

@SpringBootApplication是@Configuration、@EnableAutoConfiguration、@ComponentScan注解的集合。

@Configuration:允许在上下文注册额外的Bean或导入其他配置类

@ComponentScan:扫描被@Component注解的bean,注解默认会扫描该类所在的包下所有的类

@EnableAutoConfiguration:启动SpringBoot的自动配置机制

开发RESTful Web服务常用的注解有哪些?

Spring Bean相关:

@Autowired : 自动导入对象到类中,被注入进的类同样要被Spring容器管理。

@RestController : @RestControl1er注解是@Controller和@ ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直接填入HTTP响应体中,是REST风格的控制器。

@Component : 通用的注解,可标注任意类为Spring 组件。如果一个Bean不知道属于哪个层,可以使用@Component注解标注。

@Repository : 对应持久层即Dao层,主要用于数据库相关操作。

@Service :对应服务层,主要涉及一些每杂的逻辑,需要用到Dao层。

@Controller : 对应Spring MVC控制层,主要用于接受用户请求并调用Service层返回数据给前端页面。

常见的HTTP请求类型:

@Get Mapping :GET 请求

@PostMapping : POST 请求

@PutMapping : PUT请求

@DeleteMapping : DELETE 请求

前后端传值:

@RequestParam 获取查询参数

@PathVariable 获取路径参数

@RequestBody : 读取request请求,接收到数据之后会自动将数据绑定到Java对象上去。

什么是YAML?有什么优缺点?

YAML是一种人类可读的数据序列化语言,通常用于配置文件。

优点:YAML文件具有结构化的特点,直观清晰,有层次感。

缺点:不支持@PropertySource注解导入自定义的YAML配置

Spring Boot常用的读取配置文件的方式有哪些?

1.通过@Value读取比较简单的配置信息(不被推荐)

2.通过@ConfigurationProperties读取并与bean绑定(使用@Component)

可以像普通bean一样,将其注入到类中使用。

3.如果不使用@Component,要在使用配置文件的地方使用@EnableConfigurationProperties注册我们配置的bean

4.@PropertySource读取指定的Properties文件

常见的Bean映射工具

Spring BeanUtils、Apache BeanUtils、MapStruct、 ModelMapper、Dozer、 Orika、 JMapper

Spring Boot如何监控系统实际运行状态?

可以使用Spring Boot Actuator对Spring Boot项目进行简单的监控,提供了一些获取程序运行时的内部状态信息的API。

Spring Boot如何做请求参数校验?

只需要导入spring-boot-starter-web依赖就够了,它的子依赖包含了我们所需要的东西。

相关推荐
极光代码工作室28 分钟前
基于SpringBoot的课程预约系统
java·springboot·web开发·后端开发
kyriewen1 小时前
面试官让我手写虚拟列表——AI生成的版本,快速滚动几下就白屏了
前端·javascript·面试
IT_陈寒1 小时前
Vite热更新失效?你可能漏了这个配置
前端·人工智能·后端
Leighteen1 小时前
`try-finally` 里的 `return`:为什么 `finally` 会悄悄改掉返回值、吞掉异常
java·开发语言
Revolution612 小时前
React 组件重新渲染时,到底重新执行了什么
前端·react.js·面试
名字还没想好☜2 小时前
Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势
java·数据库·golang·go·goroutine
圆山猫2 小时前
[Virtualization](三):RISC-V H-extension 与 Guest 执行模式
android·java·risc-v
caishenzhibiao2 小时前
期货先行者主图 同花顺期货通指标
java·c语言·c#
史呆芬2 小时前
分布式事务实战:微服务跨服务数据一致性解决方案
java·后端·spring cloud
IT界的老黄牛3 小时前
限流命中后该怎么办:直接丢、阻塞等待、延迟重投三种姿势的取舍
java·rocketmq·redisson·令牌桶·削峰·分布式限流