Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?
Spring Boot的核心注解是@SpringBootApplication
。
@SpringBootApplication
注解组合了三个核心注解:
-
@SpringBootConfiguration
:标识该类是Spring Boot应用程序的配置类,用于替代传统的XML配置文件。 -
@EnableAutoConfiguration
:自动配置注解,通过扫描classpath中的jar包,根据引入的依赖自动配置Spring框架。 -
@ComponentScan
:自动扫描注解,用于自动扫描并注册组件(Bean),包括@Controller、@Service、@Repository和@Configuration等注解。
除了以上三个核心注解外,@SpringBootApplication
还包含了其他常用的注解,如@Configuration
、@EnableAspectJAutoProxy
、@Import
等,用于进一步配置和扩展Spring Boot应用程序。
运行Spring Boot有哪几种方式?
如何理解 Spring Boot 中的 Starters?
在Spring Boot中,Starters是一系列预定义的依赖关系集合,用于快速启动常用的功能模块。每个Starter都是一个Maven依赖关系集合,它包含了实现特定功能所需的所有依赖项,以及预先配置的默认设置。通过引入Starter,可以快速地将所需的功能集成到应用程序中,而不需要手动添加大量的依赖项和进行复杂的配置。
如何在Spring Boot启动的时候运行一些特定的代码?
在Spring Boot中,可以使用ApplicationRunner
和CommandLineRunner
接口来在应用程序启动时运行一些特定的代码。
ApplicationRunner
和CommandLineRunner
接口都只定义了一个方法,run
方法,它们都会在Spring Boot应用程序启动时执行。两个接口的区别在于传递给run
方法的参数类型不同:
ApplicationRunner
接口的run
方法的参数是ApplicationArguments
类型的,可以获取应用程序的启动参数;CommandLineRunner
接口的run
方法的参数是String
类型的数组,可以获取命令行参数。
Spring Boot 需要独立的容器运行吗?
Spring Boot中的监视器是什么?
在Spring Boot中,监视器(Monitor)是一个用于收集应用程序运行时信息的组件。它可以收集应用程序的性能指标、日志、应用程序状态等信息,并将这些信息汇总展示给开发者,以帮助开发者了解应用程序的运行情况,及时发现和解决问题。
Spring Boot提供了Spring Boot Actuator
框架,它是一个为Spring Boot应用程序提供监视和管理功能的框架,可以通过HTTP接口或JMX(Java Management Extensions)来访问和获取应用程序的运行时信息。Actuator提供了很多内置的监视器,可以用于收集和展示应用程序的各种运行时信息,包括:
/health
:应用程序的健康状况;/metrics
:应用程序的性能指标,如请求数、处理时间、错误率等;/loggers
:应用程序的日志信息;/info
:应用程序的基本信息;/env
:应用程序的环境信息;/configprops
:应用程序的配置属性信息。
除了以上内置的监视器外,开发者还可以自定义监视器,以满足应用程序特定的监视需求。
要在Spring Boot应用程序中启用Actuator,只需要在项目的pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
启用后,可以通过HTTP接口或JMX来访问和获取应用程序的运行时信息。例如,要访问/health
监视器,只需要在浏览器中输入http://localhost:8080/actuator/health
即可。
如何使用Spring Boot实现异常处理
在Spring Boot中,可以使用@ControllerAdvice
和@ExceptionHandler
注解来实现异常处理。
SpringBoot 实现热部署有哪几种方式?
如何理解 Spring Boot 配置加载顺序?
Spring Boot中的配置加载顺序是指在启动应用程序时,Spring Boot将如何加载应用程序的配置属性。Spring Boot提供了多种配置文件格式,包括.properties、.yml和.yml等格式,可以通过在不同的文件中定义属性来配置应用程序。
在Spring Boot中,配置文件的加载顺序按照以下规则:
-
在class path根目录下,按照以下顺序加载application.properties、application.yml、application.yaml和application.json等配置文件。其中application.properties的优先级最高。
-
如果在环境变量中定义了SPRING_CONFIG_NAME,则Spring Boot将使用该名称作为配置文件的名称。
-
如果在环境变量中定义了SPRING_CONFIG_LOCATION,则Spring Boot将在该位置查找配置文件。
-
在当前目录下查找名为config的文件夹,并按照以下顺序加载application.properties、application.yml、application.yaml和application.json等配置文件。
-
在jar文件所在目录的/config子目录下,按照以下顺序加载application.properties、application.yml、application.yaml和application.json等配置文件。
-
如果没有找到任何配置文件,则Spring Boot将使用默认配置。
需要注意的是,以上顺序是从高到低的优先级顺序。也就是说,如果在高优先级的配置文件中定义了某个属性,那么它将覆盖在低优先级的配置文件中定义的相同属性。
Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
在Spring Boot中,核心的配置文件有以下几个:
-
application.properties:这是一个基于属性的配置文件,它使用键值对的形式来配置应用程序。它的默认位置是在classpath下的根目录,也可以通过指定spring.config.name和spring.config.location属性来指定名称和位置。
-
application.yml:这是一个基于YAML语法的配置文件,它以缩进的方式来组织属性。与application.properties相比,它更加简洁易读。它的默认位置也是在classpath下的根目录。
这两种配置文件的主要区别是语法不同,如果需要配置简单的属性,使用application.properties更为方便;如果需要配置复杂的结构,使用application.yml更为便捷。
此外,Spring Boot还提供了一个bootstrap.properties或bootstrap.yml配置文件,它的加载优先级比application.properties或application.yml更高,用于配置Spring Boot的内部配置,如日志和加密等。
需要注意的是,在多环境下,可以使用带有环境标识的配置文件,如application-dev.properties/application-dev.yml等,来指定不同的环境配置。Spring Boot还支持使用@Profile注解来指定不同环境下的配置属性。
如何集成 Spring Boot 和 ActiveMQ?
Spring Boot、Spring MVC 和 Spring 有什么区别?
Spring Boot 还提供了其它的哪些 Starter Project Options?