SpringBoot相关问题

什么是SpringBoot?为什么使用SpringBoot?

  • 用来简化Spring应用的初始搭建以及开发过程 使用特定的方式来进行配置(properties或yml文件)
  • 创建独立的spring引用程序 main方法运行
  • 嵌入的Tomcat无需部署war文件
  • 简化maven配置
  • 自动配置spring添加对应功能starter自动化配置

springboot来简化spring应用开发,约定大于配置,去繁重简,just run 就能创建一个独立的,产品级别的应用

SpringBoot 的优点非常多

  1. 独立运行

    SpringBoot内嵌了各种servlet容器,Tomcat,Jetty等,现在不需要打包成war包部署到容器中,SpringBoot只要打包成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内

  2. 简化配置

    Spring-boot-starter-web启动器自动依赖其他组件,减少了maven配置

  3. 自动配置 SpringBoot能根据当前类路径下的类,jar包来自动配置bean,如添加一个spring-boot-starter-web启动器就能拥有web功能,无需其他配置

  4. 无代码生成和xml配置

    SpringBoot配置过程中无代码生成,也无需xml配置文件就能完成所有的配置工作,这一切都是借助与条件注解完成的,这也是Spring4,x的核心功能之一

  5. 应用监控

    SpringBoot提供一系列端点可以监控服务及应用,做健康监测

SpringBoot核心注解是哪个,它主要由哪几个注解组成的?

启动类上面的注解是@SpringBootApplication,它也是Spring Boot的核心注解,主要组合包含了一下三个注解:

@SpringBootConfiguration: 组合了@Configuration注解,实现配置文件的功能

@EnableAutoConfiguration: 打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class})

@ComponentScan: Spring组件扫描

运行SpringBoot有哪几种方式?

  1. 打包用命令或者放到容器中运行
  2. 用maven插件运行
  3. 直接执行main方法运行

如何理解SpringBoot中的Starters?

Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其它技术,而不需要导出找实例代码和依赖包.如果想使用Spring JPA访问数据库,只要加入spring-boot-starter-data-jpa启动器依赖就能使用了.Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖.

Starter命名

Spring Boot官方的启动器都是以spring-boot-starter-命名的,代表了一个特定的应用类型。第三方的启动器不能以spring-boot开头命名,它们都被Spring Boot官方保留。一般一个第三方的应该这样命名,像mybatis的mybatis-spring-boot-starter。

Starters分类

  1. Spring Boot应用类启动器
启动器名称 功能描述
spring-boot-starter 包含自动配置,日志,yaml支持
spring-boot-starter-web 使用Spring MVC构建web程序,包含restful,默认使用Tomcat容器 后面的版本貌似默认jetty
  1. Spring Boot生产启动器
启动器名称 功能描述
spring-boot-starter-actuator 提供生产环境特性,能监控管理应用
  1. SpringBoot技术类启动器
启动器名称 功能描述
spring-boot-starter-json 提供对JSON的读写支持
spring-boot-starter-logging 默认的日志启动器,默认使用Logback
  1. 其它第三方启动器

Spring Boot中的监视器是什么?

Spring boot actuator是spring启动框架中的重要功能之一。Spring boot监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。即使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组可直接作为HTTP URL访问的REST端点来检查状态