什么是SpringBoot?
SpringBoot 是一个为了简化Java应用环境搭建和开发过程的一个框架。它比较方便的就是自动配置,不需要XML配置,在主配置类上打一个@SpringBootApplication标签就可以实现自动配置。SpringBoot还简化了Maven的配置,导入SpringBoot的starter架包就可以把对应的依赖包都导入到项目中,很方便,不用去考虑版本兼容。SpringBoot还内嵌了tomcat,可以以jar包的形式独立运行。它的缺点是,由于不用自己做配置,报错的时候很难去定位。
SpringBoot 自动配置原理?
SpringBoot 实现自动配置主要是依靠@SpringBootApplication这个注解,在主配置类上打上@SpringBootApplication注解就能实现自动配置,这个注解里面主要包含了三个注解,分别是@SpringBootConfiguration标明这个类是一个配置类、@EnableAutoConfiguration实现自动配置、@ComponentScan扫描组件。@EnableAutoConfiguration的底层使用了一个@Import注解,引入了一个自动配置导入选择器AutoConfigurationImportSelector,这个类里面有一个getCandidateConfigurations方法,获取候选配置的方法,他会去当前类路径下获取autoconfiguration jar包下面的META-INF文件夹下面的Spring.factories文件并以一个List<String>返回(完成自动配置bean),这里面放了大量的自动配置项。
SpringBoot 的核心文件有哪几个?
application.yml(.properties)、bootstrap.yml(.properties)
- 如配置中心config需要加载来自外部的配置信息是就要使用bootstrap.yml或.properties,在文件中配置外部配置信息的连接。
- yml 格式不支持 @PropertySource 注解导入配置
SpringBoot 几种运行方式?
- 打包用命令行java -jar xxx.jar运行
- 用Maven插件运行
- 直接main方法运行
如何在 SpringBoot 启动的时候运行一些特定的代码?
实现接口ApplicationRunner或者CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个run方法。
如果启动的时候有多个ApplicationRunner和CommandLineRunner,想控制它们的启动顺序,可以实现 org.springframework.core.ordered接口或者使用 org.springframework.core.annotation.order注解。
SpringBoot 有哪几种读取配置的方式?
- @value标签+el表达式
- @ConfigurationProperties标签
- @propertySource+@ConfigurationProperties
SpringBoot 支持哪些日志框架?推荐和默认的日志框架是哪个?
Spring Boot支持Java Util Logging,Log4j2,Logback作为日志框架,如果你使用starters启动器,Spring Boot将使用Logback作为默认日志框架。无论使用哪种日志框架,Spring Boot都支持配置将日志输出到控制台或者文件中。
默认使用Logback作为日志框架,往资源目录下创建一个logback-spring.xml即可
SpringBoot 如何定义多套不同环境配置?
SpringBoot 可以兼容老 Spring 项目吗,如何做?
可以兼容,使用 @ImportResource 注解导入老 Spring 项目配置文件。