当前位置: 首页 > news >正文

面试--springboot基础

1、约定优于配置,理解
  • 是一种软件设计的范式,减少开发人员对于配置项的维护,更加聚焦在业务逻辑上

  • 基于spring框架开发web项目,只需要做一次配置

    springboot starter启动依赖,帮我们管理jar包版本

    当前应用依赖spring mvc相关的jar,会自动内置tomcat运行web应用,不需要再单独部署

    自动装配机制的实现中国,通过扫描约定路径下的配置文件,实现bean的自动装配

2、自动装配机制的原理

自动把第三方组件的bean装载到IOC容器中,不需要再去写bean的装配配置

启动类上@SpringBootApplication就可以实现自动装配,真正实现自动装配的注解是@EnableAutoConfiguration

  • 引入starter启动依赖组件,这个组件里必须包含@Configuration 配置类,通过@Bean声明需要装配到IOC的bean对象

  • 这个配置类是放在第三方jar包里,然后通过约定优于配置私下,把这个配置类的全路径放在classpath:/META-INF/spring.factories文件中,这样springboot就可以知道第三方jar包里的配置类的位置,这个步骤主要是用到spring里SpringFactoriesLoader来完成的

  • springboot拿到jar包的配置类后,再通过spring提供的ImportSelector接口实现动态加载

启动底层主要是三个注解:

  • @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
  • @EnableAutoConfiguration:打开自动配置的功能
  • @ComponentScan:Spring组件扫描。

3、如何理解starter

Spring Boot 中的 starter 到底是什么 ? - 知乎

starter是启动以来,为何对应的jar包版本依赖,避免一些版本冲突的问题。内部集成了自动装配机制,这个组件会自动集成到spri那个生态下,并且自动装配bean,只需要在在 application.properties中维护配置就可以了,官方是spring-boot-starter-xxx开头、

常用的:spring-boot-starter-data-redis、druid-spring-boot-starter

4、如何解决跨域

访问浏览器网页时,只能访问同源的资源,比如协议、域名、端口号不同的资源时存在限制

  • jsonp:动态地创建<script>标签,只支持get请求

  • cros:服务器短配置Access-Control-Allow-Origin,配置允许哪些域名支持跨域请求

    @CrossOrigin(origins = "http://localhost:8080")指定哪些允许跨域

    继承WebMvcConfigurer重写addCorsMappings设置请求源

  • nginx反向代理

        add_header Access-Control-Allow-Origin

        add_header Access-Control-Allow-Methods

5. 事物的使用

使用注解@EnableTransactionManagement开启事物之后,然后在Service方法上添加注解@Transactional

6. Async异步调用方法

方法上使用@Async注解,需要在启动类加入@EnableAsync

7. 核心配置文件ootstrap.properties 和application.properties区别

在结合Spring Cloud 时,bootstrap.properties配置就会经常遇到了,特别是在需要加载一些远程配置文件的时侯。

  • boostrap 由父 ApplicationContext 加载的,比applicaton 优先加载,配置在应用程序上下文的引导阶段生效,且 boostrap 里面的属性不能被覆盖;
  • application 由ApplicatonContext 加载,用于 spring boot 项目的自动化配置。

8、全局异常处理

注解@RestControllerAdvice,重写全局异常处理方法

9. 无需重新启动服务器重新加载 Spring Boot 上的更改

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

相关文章:

  • 跨足泛娱乐:TikTok如何重新定义娱乐产业?
  • 有限域的Fast Multiplication和Modular Reduction算法实现
  • Flink SQL TopN语句详解
  • 【MongoDB-Redis-MySQL-Elasticsearch-Kibana-RabbitMQ-MinIO】Java全栈开发软件一网打尽
  • flutter开发实战-TweenSequence实现动画序列
  • 单通道低压 H 桥电机驱动芯片AT9110H 兼容L9110 马达驱动芯片
  • 达梦数据库答案
  • 勒索病毒最新变种.halo勒索病毒来袭,如何恢复受感染的数据?
  • SwissArmyTransformer瑞士军刀工具箱使用手册
  • 微服务之Eureka
  • 硬件知识1
  • 零代码编程:用ChatGPT批量提取flash动画swf文件中的mp3
  • React:实现一个定时器计数器,每秒自动+1
  • 大语言模型比武
  • 初步了解OSG智能指针
  • 传感器融合是什么?及其类型和应用
  • react typescript @别名的使用
  • Django框架的推导
  • AI 绘画 | Stable Diffusion 高清修复、细节优化
  • ArcGIS属性表导出时中文为乱码的解决办法
  • 这个死亡率第一的“老年病”,正悄悄逼近年轻人
  • 前四月国家铁路发送货物12.99亿吨,同比增长3.6%
  • 中国旅游日|上天当个“显眼包”!体验低空经济的“飞”凡魅力
  • 聚焦中华文明精神标识,多校专家学者跨学科对话交流
  • “复旦源”一源六馆焕新启幕,设立文化发展基金首期1亿元
  • 广西鹿寨一水文站“倒刺扶手”存安全隐患,官方通报处理情况