目录
[Spring boot 常用注解](#Spring boot 常用注解)
[Spring Boot 中的监视器是什么?](#Spring Boot 中的监视器是什么?)
[谈谈你对spring 中starter的理解](#谈谈你对spring 中starter的理解)
[Spring boot 项目启动方式](#Spring boot 项目启动方式)
[Spring boot 如何解决跨域问题](#Spring boot 如何解决跨域问题)
[SpringBoot配置文件有哪些 怎么实现多环境配置](#SpringBoot配置文件有哪些 怎么实现多环境配置)
[如何使用 Spring Boot 实现异常处理](#如何使用 Spring Boot 实现异常处理)
重点
SpringBoot****中的核心注解
@SpringBootApplication 注解,这个注解是一个组合注解
@ComponentScan: 默认情况下会扫描当前包及其子包下面所有被 @Component 注解修饰的 java 类
@SpringBootConfiguration :组合了 @Configuration 这个注解,也就是说明被 SpringBootApplication 所标识的Java 类就是一个 Java 配置类
@EnableAutoConfiguration :打开自动装配的功能 --- 》 META-INF/spring.factories 文件中加载需要自动注入的Java 类
介绍下SpringBoot的自动装配原理
自动配置是指在应用程序启动时,SpringBoot根据classpath类路径下的依赖自动应用配置程序所需的一系列bean和配置类,从而减少开发者的配置工作,提高开发效率。
Spring Boot的自动装配实际上是从 META-INF/spring.factories文件中获取到对应的需要进行自动装配的类,并生成相应的Bean对象,然后将它们交给Spring容器进行管理。
1、Spring Boot项目中@SpringBootApplication注解实现自动装配,这个注解是对三个注解进行了封装:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan,
2、其中@EnableAutoConfiguration是实现自动化配置的核心注解。
3、该注解通过@Import注解导入AutoConfigurationImportSelector,这个类实现了一个导入器接口ImportSelector。在该接口中重写了一个方法selectImports。
4、selectImports方法的返回值是一个数组,数组中存储的就是要被导入到spring容器中的类的全限定名。在AutoConfigurationImportSelector类中重写了这个方法。
5、该方法内部就是读取了项目的classpath路径下META-INF/spring.factories文件中的所配置的类的全类名。
6、在这些配置类中所定义的Bean会根据条件注解@Condition 所指定的条件来决定是否需要将其导入到Spring容器中
基础
介绍下****SpringBoot
基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突、引用的不稳定性得到了解决。
SpringBoot****有哪些优点
- 快速构建项目,可以选一些必要的组件;
- 对主流框架的无配置集成;
- 内嵌Tomcat容器,项目可独立运行;
- 删除了繁琐的xml配置文件;
- 极大地提高了开发和部署效率;
- 提供starter,简化maven配置;
Spring boot 常用注解
@RestController
@Service
@Autowired
@Resource
@RequestMapping GetMapping PostMapping
@Import:xml 文件中有个 import 标签引入其他的配置文件, @Import 其实是 import 标签的替代,也可
以导入第三方的配置类。而且和 @EnableXXX 可以实现功能模块的复用, @Import 注解还可以导入具体
的类型对象到 Spring 容器中,
@Indexed : Spring5 之后提供的提升 @ComponentScan 性能的一个主键
@EnableAutoConfiguration
@SpringBootApplication
@SpringBootConfiguration
Spring Boot 中的监视器是什么?
在Spring Boot中,监视器是一种用于监视应用程序运行状态和性能的组件。它可以收集关于应用程序的各种指标和统计数据,并将其展示在一个可视化的仪表盘上。监视器可以帮助开发人员识别和解决应用程序中的性能问题,并提供对应用程序的实时监控。Spring Boot中常见的监视器包括Actuator 和Spring Boot Admin。 Actuator提供了一组内置的端点(endpoints),可以通过HTTP请求访问,并提供应用程序的关键指标和信息。Spring Boot Admin是一个基于Actuator的监控和管理工具,可以用于集中管理和监控多个Spring Boot应用程序。
作用:
性能监测:监视器可以帮助我们监测应用程序的性能,例如响应时间、吞吐量等。通过监视器,我们可以追踪和诊断应用程序中的性能瓶颈,以便进行优化和改进。
健康检查:监视器可以检查应用程序的健康状况,例如检测数据库连接是否正常、内存使用情况是否正常等。通过监视器,我们可以及时发现并处理应用程序的问题,确保应用程序的稳定运行。
应用程序管理:监视器可以帮助我们管理应用程序的状态,例如启动、停止、重新启动等。通过监视器,我们可以方便地对应用程序进行管理和操作。
监控报警:监视器可以设置阈值,并在达到或超过阈值时发送警报。通过监视器,我们可以实时监控应用程序的运行情况,并在出现问题时及时采取措施。
谈谈你对spring 中starter的理解
它是一组预定义的依赖项集合,旨在简化Maven或Gradle等构建工具中的依赖管理。每个Starter都包含了实现特定功能所需的库和组件,以及相应的配置文件,使得开发者能够快速整合Spring生态系统中的各种技术栈,提升开发效率。
Spring Boot Starter的主要作用包括:
- 维护对应JAR包的版本依赖:Starter组件以功能为纬度,维护对应jar包的版本依赖,减少开发者对版本冲突的关注。
- 导入所有的JAR包:Starter组件会将对应功能的所有jar包依赖全部导入,避免开发者自己引入依赖带来的麻烦。
- 内部集成自动装配机制:Starter组件内部集成了自动装配机制,使得程序依赖对应的Starter组件后,能够自动集成到Spring Boot生态中。
- 外部配置自动集成到SpringBoot:依赖Starter组件后,这些组件对应的功能所需要的维护的外部配置会自动集成到Spring Boot中,简化配置管理。
介绍几个常用的****starter
spring-boot-starter-web 提供了 SpringMVC+ 内嵌了 Tomcat 容器
spring-boot-starter-test:提供了 springboot 测试
spring-boot-starter-data-jpa: 提供了 SpringJPA 和 Hibernate
spring-boot-starter-data-redis: 提供了 Redis 服务
mybatis-spring-boot-starter: 提供了 MyBatis
SpringBoot项目需要单独的Web****容器吗
可以不需要, SpringBoot 项目中我们会添加 spring-boot-starter-web 这个依赖,而在这个依赖中内嵌了 Tomcat容器
Spring boot 项目启动方式
直接打成jar报启动或者打成war放入容器中启动
Spring boot 如何解决跨域问题
在请求时,如果出现了以下情况中的任意一种,那么它就是跨域请求:
协议不同,如 http 和 https;
域名不同;
端口不同。
解决方式
1、通过配置文件实现跨域:实现 WebMvcConfigurer 接口;重写 addCorsMappings 方法,设置允许跨域的代码;
2、通过 CorsFilter 对象实现跨域;
3、使用 @CrossOrigin 注解实现跨域;
4、通过 Response 对象实现跨域;
5、通过实现 ResponseBodyAdvice 实现跨域。
参考:Spring Boot 解决跨域问题的 5种方案_springboot跨域-CSDN博客
SpringBoot项目中如何使用log4j
在SpringBoot项目中默认提供了日志框架Logback,所以我们如果需要引入log4j的话,必须先排查 Logback的依赖,然后再添加log4j的依赖,然后在src/main/resouces目录下创建log4j.properties文 件,然后就可以进行日志的相关的配置。
SpringBoot配置文件有哪些 怎么实现多环境配置
Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。
application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。
bootstrap配置文件的特性:
1、bootstrap 由父 ApplicationContext 加载,比 applicaton 优先加载
2、bootstrap 里面的属性不能被覆盖;
3、需要在SpringCloud环境下才支持
如何使用 Spring Boot 实现异常处理
1、使用 @ControllerAdvice + @ExceptionHandler 注解处理全局异常
2、配置 SimpleMappingExceptionResolver 类处理异常
3、实现 HandlerExceptionResolver 接口处理异常
4、@ExceptionHandler 注解处理当前类异常
拓展:
Condition
Condition 是在Spring 4.0 增加的条件判断功能,通过这个可以功能可以实现选择性的创建 Bean 操作。
Condition 是一个接口,只有一个 matches 方法,返回 true 则表示条件匹配。matches 方法的两个参数分别是上下文信息和注解的元信息,从这两个参数中可以获取到 IOC 容器和当前组件的信息,从而判断条件是否匹配。
@Conditional是条件注解中的属性 value,其类型是 Condition 数组。组件必须匹配数组中所有的 Condition,才可以被注册。
在需要条件判断是否创建的对象可以间构造方法上添加**@Conditional在属性value中设置配置的**Condition实现在其中配置是否创建的条件