1. 什么是SpringBoot?
SpringBoot是一个基于Spring框架的快速开发框架,它采用约定大于配置,自动装配的方式,可以快速地创建独立的,生产级别的,基于Spring的应用程序。
相比于传统的Spring框架,SpringBoot更加简单易用,它将大量常见的配置和依赖项内置到框架,开发人员可以快速搭建一个完整的应用程序,无需手动配置复杂的XML文件或Java代码。SpringBoot还支持集成其他流行的框架和技术等。
2、SpringBoot的优点
- 内置servlet容器,不需要在服务器部署 tomcat。只需要将项目打成 jar 包,使用 java -jar xxx.jar一键式启动项目
- SpringBoot提供了starter,把常用库聚合在一起,简化复杂的环境配置,快速搭建spring应用环境
- 可以快速创建独立运行的spring项目,集成主流框架
3、什么是约定大于配置?
约定大于配置是一种软件开发理念,它的核心思想是:通过建立约定,默认值和惯例,减少编程中需要做出的决策,提高开发效率和生产力。
例如在SpringBoot中,默认按照一定的命名规则查找数据库连接,bean定义等相关内容,这样开发人员就可以省略大量的配置和代码,直接使用默认的约定和规则来完成开发任务,从而提高开发效率和代码质量。
总的来说,约定大于配置是一种软件开发的优化策略,通过建立约定和默认值,帮助开发人员快速构建和维护高质量的应用程序,减少出错的可能性,提高开发效率和生产力。
4、SpringBoot的自动配置原理?
1.通过@SpringBootConfiguration引入了@EnableAutoConfiguration(负责启动自动配置功能)
2.@EnableAutoConfiguration引入了@Import
3. Spring容器启动时:加载loc容器时会解析@Import 注解
4. @lmport导入了一个deferredlmporSelector,它会使SpringBoot的自动配置类的顺序在最后,这样方便我们扩展和覆盖
5. 然后读取所有的/META-INF/spring.factories文件
6.过滤出所有AutoConfigurtionClass类型的类
7. 最后通过@Condition排除无效的自动配置类
5、SpringBoot的核心注解
1. @SpringBootApplication注解:这个注解标识了一个SpringBoot工程
2. @SpringBootConfiguration:这个注解实际就是一个@Configuration,表示启动类也是一个配置类
3. @EnableAutoConfiguration:向Spring容器中导入了一个Selector,用来加载ClassPath下SpingFacories中所定义的自动配置类,将这些自动加载为配置Bean
4. @Conditional 也很关键,如果没有它我们无法在自定义应用中进行定制开发
@ConditionalOnBean.
@ConditionalOnClass.
@ConditionalOnExpression
6、 读取配置文件和加载顺序优先级
通过事件监听的方式读取的配置文件: ConfigFileApplicationListener
外部配置文件:优先级从高到低,高优先级的配置覆盖低优先级的配置,所有配置会形成互补配置
同一级下 application.properties 优先于 application.yml
7、 Spring 和 SpringBoot的关系和区别?
SpringBoot是Spring生态的产品。
Spring Framework是一个容器框架
SpringBoot 它不是一个框架、它是一个可以快速构建基于Spring的脚手架(里面包含了$pring和各种框架),为开发Spring生态其他框架铺平道路(约定大于配置)
2个不是一个层面的东西, 没有可比性。
8、Spring Boot支持哪些日志框架?
Spring Boot 支持 Java Util Logging, Log4j2, Lockback 作为日志框架,如果你使用 Starter 启动器,Spring Boot 将使用 Logback 作为默认日志框架,但是不管是那种日志框架他都支持将配置文件输出到控制台或者文件中
9、运行SpringBoot有哪几种方式?
- 打包用命令或者者放到容器中运行
- 用 Maven/Gradle 插件运行
- 直接执行 main 方法运行
10、什么是Swagger
Swagger是一个API文档生成工具,可以根据代码注释自动生成API文档,同时提供易于使用的UI界面,可以让开发者方便地查看和测试API接口。