当前位置:   article > 正文

SpringBoot 框架的常考面试题总结_springboot框架面试题

springboot框架面试题

一、SpringBoot是什么?SpringBoot 和 Spring 之间有什么区别?

Spring Boot是一个基于Spring框架的快速开发框架,它简化了Spring应用程序的配置和部署过程,提供了一种约定大于配置的方式来构建应用程序。Spring Boot通过自动配置和起步依赖简化了Spring应用程序的开发,使得开发者能够更加专注于业务逻辑的实现。

Spring Boot的主要特点包括:

1. 简化配置:Spring Boot通过自动配置来减少开发者的配置工作,大部分情况下,开发者只需要进行少量的配置,即可快速构建应用程序。

2. 内嵌容器:Spring Boot内置了Tomcat、Jetty等常用的Web容器,开发者可以将应用程序打包成可执行的JAR文件,直接运行,无需额外部署。

3. 起步依赖:Spring Boot提供了一系列的起步依赖,开发者只需要引入相关的依赖,即可快速集成常用的功能,如数据库访问、Web开发等。

4. 自动配置:Spring Boot通过自动配置来根据应用程序的依赖,自动配置相关的功能,开发者可以根据需要进行定制。

5. Actuator:Spring Boot提供了Actuator模块,可以方便地监控和管理应用程序。

Spring和Spring Boot之间的区别如下:

1. 配置方式:Spring需要通过XML配置文件或者Java配置类来进行配置,而Spring Boot通过自动配置和起步依赖来简化配置过程。

2. 依赖管理:Spring需要手动管理依赖,需要引入相关的jar包,而Spring Boot通过起步依赖来自动管理依赖,开发者只需要引入相关的依赖即可。

3. 开发效率:Spring Boot简化了Spring应用程序的配置和部署过程,提供了一种约定大于配置的方式来构建应用程序,使得开发者能够更加专注于业务逻辑的实现,提高了开发效率。

总的来说,Spring Boot是在Spring框架基础上的一个快速开发框架,通过简化配置和自动化依赖管理,提高了开发效率。使用Spring Boot可以快速构建独立的、可执行的Spring应用程序。

二、SpringBoot 有哪些常用的注解?

Spring Boot中有很多常用的注解,以下是其中一些常用的注解:

1. @SpringBootApplication:用于标注主类,表示这是一个Spring Boot应用程序的入口类,同时也包含了@EnableAutoConfiguration和@ComponentScan注解。

2. @RestController:用于标注Controller类,表示该类是一个控制器,可以处理HTTP请求,并返回JSON或XML等格式的响应。

3. @RequestMapping:用于标注处理请求的方法,指定请求的URL路径和请求方法。

4. @PathVariable:用于获取URL路径中的参数值。

5. @RequestParam:用于获取请求参数的值。

6. @RequestBody:用于获取请求体中的数据。

7. @ResponseBody:用于将方法的返回值转换为JSON或XML等格式的响应。

8. @Autowired:用于自动注入依赖对象。

9. @Value:用于注入配置文件中的属性值。

10. @ConfigurationProperties:用于将配置文件中的属性值注入到Bean中。

11. @EnableAutoConfiguration:用于自动配置Spring应用程序,根据类路径下的依赖自动配置Bean。

12. @ComponentScan:用于扫描指定包下的组件,将其注册为Spring的Bean。

13. @Conditional:用于根据条件决定是否创建Bean。

14. @EnableScheduling:用于开启定时任务的支持。

15. @EnableAsync:用于开启异步方法的支持。

这些注解是Spring Boot中常用的注解,可以帮助开发者快速构建和配置Spring Boot应用程序。根据具体的需求,开发者可以选择合适的注解来实现相应的功能。

三、SpringBoot 如何开启自动配置?

在Spring Boot中,自动配置是通过@EnableAutoConfiguration注解来实现的。该注解可以标注在主类上,用于开启自动配置功能。

@EnableAutoConfiguration注解会根据项目的依赖和配置,自动配置Spring应用程序的各种组件,例如数据库连接、Web开发、消息队列等。它会根据classpath下的依赖自动配置相关的Bean,并将它们注册到Spring容器中。

通常情况下,@SpringBootApplication注解已经包含了@EnableAutoConfiguration注解,所以在主类上标注@SpringBootApplication注解即可开启自动配置。

  1. @SpringBootApplication
  2. public class MyApplication {
  3.     public static void main(String[] args) {
  4.         SpringApplication.run(MyApplication.class, args);
  5.     }
  6. }

通过在主类上标注@SpringBootApplication注解,就可以开启自动配置功能,Spring Boot会根据项目的依赖和配置自动配置相关的组件,简化了项目的配置过程,提高了开发效率。

四、SpringBoot 的配置文件有哪两种类型?,优先级是什么?

Spring Boot的配置文件有两种类型:properties文件和YAML文件。

1. properties文件:是传统的配置文件格式,使用键值对的形式来配置应用程序的属性。可以使用.properties或者.yml文件扩展名。

2. YAML文件:是一种基于缩进的轻量级数据序列化格式,使用缩进和冒号的方式来表示属性之间的层次关系。通常使用.yml文件扩展名。

Spring Boot的配置文件有以下优先级:

1. 命令行参数:可以通过命令行参数来覆盖配置文件中的属性值。例如:`java -jar myapp.jar --server.port=8081`

2. 系统环境变量:可以通过系统环境变量来覆盖配置文件中的属性值。例如:`export SERVER_PORT=8081`

3. properties文件:优先级高于YAML文件。可以通过在配置文件中定义属性来配置应用程序的属性。

4. YAML文件:优先级低于properties文件。可以通过在配置文件中定义属性来配置应用程序的属性。

5. 默认值:如果以上配置文件中都没有定义某个属性的值,则会使用Spring Boot默认的属性值。

总的来说,命令行参数和系统环境变量的优先级最高,可以覆盖配置文件中的属性值。properties文件的优先级高于YAML文件。如果以上配置文件中都没有定义某个属性的值,则会使用默认值。

五、SpringBoot 常见的启动器有哪些?如何自定义启动器?

Spring Boot常见的启动器(Starter)有以下几种:

1. spring-boot-starter-web:用于构建Web应用程序,包含了Spring MVC、Tomcat等相关依赖。

2. spring-boot-starter-data-jpa:用于使用Spring Data JPA进行数据访问,包含了Hibernate、Spring Data JPA等相关依赖。

3. spring-boot-starter-data-redis:用于使用Redis进行数据缓存和存储,包含了Jedis、Lettuce等相关依赖。

4. spring-boot-starter-thymeleaf:用于使用Thymeleaf模板引擎进行视图渲染,包含了Thymeleaf等相关依赖。

5. spring-boot-starter-test:用于编写单元测试和集成测试,包含了JUnit、Mockito等相关依赖。

6. spring-boot-starter-actuator:用于监控和管理Spring Boot应用程序,包含了Spring Boot Actuator等相关依赖。

自定义启动器的步骤如下:

1. 创建一个Maven或Gradle项目。

2. 在项目中定义一个模块,该模块的名称以“spring-boot-starter-”开头,例如“spring-boot-starter-myapp”。

3. 在模块的pom.xml(或build.gradle)文件中,添加对其他模块的依赖,这些依赖将成为自定义启动器的默认依赖。

4. 在模块的src/main/java目录下,创建一个自定义的配置类,该类需要使用@Configuration注解进行标注,并定义一些自定义的Bean。

5. 在模块的src/main/resources目录下,创建一个META-INF/spring.factories文件,并将自定义配置类的全限定名添加到该文件中。

6. 打包并安装启动器模块到本地Maven或Gradle仓库。

7. 在其他项目中,添加对自定义启动器的依赖,即可使用自定义启动器提供的功能。

通过自定义启动器,可以将一组常用的依赖和配置封装成一个模块,使得其他项目可以更方便地使用这些功能,提高开发效率。

六、SpringBoot 中如何开启监控?如何配置热部署?

在Spring Boot中开启监控可以使用Spring Boot Actuator。Actuator是Spring Boot提供的一个功能强大的监控和管理模块,可以提供对应用程序的健康状况、性能指标、日志等信息的监控和管理。

要开启Actuator,只需在项目的依赖中添加`spring-boot-starter-actuator`启动器,然后在配置文件中添加以下配置:

management.endpoints.web.exposure.include=*

这样就开启了所有的Actuator端点,可以通过访问`/actuator`路径来查看可用的端点列表。

关于热部署,Spring Boot提供了两种方式:开发阶段的热部署和生产环境的热部署。

对于开发阶段的热部署,可以使用Spring Boot DevTools。DevTools是Spring Boot提供的一个开发工具,可以实现代码的热部署,即在修改代码后,不需要重启应用程序即可生效。要开启DevTools,只需在项目的依赖中添加`spring-boot-devtools`启动器即可

对于生产环境的热部署,可以使用Spring Boot的热部署插件。可以在Maven或Gradle构建工具中添加插件配置,然后在开发环境中运行`mvn spring-boot:run`或`gradle bootRun`命令即可实现热部署。具体的插件配置可以参考Spring Boot官方文档。

需要注意的是,热部署只适用于某些类的修改,对于一些配置文件的修改可能需要重启应用程序才能生效。

七、@RestController 和 @Controller 之间的区别是什么?

`@RestController`和`@Controller`是Spring MVC中用于标识控制器的注解,它们之间的区别如下:

1. 返回值类型:`@RestController`注解的类中的方法默认返回的是JSON或XML等数据格式,而不是视图。相比之下,`@Controller`注解的类中的方法通常返回的是视图,即HTML页面。

2. `@ResponseBody`:`@RestController`注解会自动将方法的返回值转换为JSON或XML格式的响应体,并通过`@ResponseBody`注解进行标识。而`@Controller`注解需要在方法上使用`@ResponseBody`注解来实现相同的功能。

3. 组合注解:`@RestController`注解是`@Controller`和`@ResponseBody`注解的组合注解,它们一起标识一个控制器类。相比之下,`@Controller`注解只标识一个控制器类,需要在方法上使用`@ResponseBody`注解来实现返回JSON或XML格式的响应体。

综上所述,`@RestController`注解适用于构建RESTful风格的API,返回的是数据格式,而`@Controller`注解适用于构建传统的Web应用,返回的是视图。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/815580
推荐阅读
相关标签
  

闽ICP备14008679号