图片
核心总结

Spring Boot核心概念

  • 定义 :Spring Boot是Spring开源组织的子项目,一站式解决方案,简化Spring使用难度,省繁重配置,提供启动器,使开发者快速上手。

  • 特征 :创建独立Spring应用;直接嵌入Tomcat、Jetty或Undertow等容器,无需部署WAR;提供“starter”依赖简化构建配置;自动配置Spring和第三方库;提供生产功能如指标、健康检查等;无代码生成和XML配置。

  • 启动类注解 :@SpringBootApplication,由@SpringBootConfiguration(组合@Configuration)、@EnableAutoConfiguration、@ComponentScan组成。

项目构建与配置

  • 快速构建 :可通过Web界面start.spring.io、Spring Tool Suite、IntelliJ IDEA、Spring Boot CLI等方式。

  • 配置文件 :支持properties和yml格式。properties如java.xiaokaxiu.name=xiaoka;yml如java:xiaokaxiu:name:xiaoka。可放于外置的/config子目录、运行目录,内置的config包、classpath根目录等,按优先级覆盖配置。

  • 自动配置原理 :@EnableAutoConfiguration注解引入AutoConfigurationImportSelector,扫描 META-INF/spring.factories的jar包。

开发与部署

  • 启动方式 :main方法、命令行java -jar、mvn/gradle等方式。无需独立容器,内置Tomcat/Jetty。

  • 热部署 :可通过spring-boot-devtools、Spring Loaded、Jrebel等方式实现。

  • 多环境配置 :可使用application-{profile}.properties/yml文件,如开发环境dev、测试test、生产prod等,通过spring.profiles.active激活指定环境配置。

功能与特性

  • starter :依赖合成,包含相关功能依赖,避免手动依赖和包冲突,提升开发效率,相关配置可覆盖默认值。

  • SpringProfiles :根据不同环境注册bean,实现配置切换。

  • 配置加载顺序 :多种方式加载配置,如properties文件、YAML文件、系统环境变量、命令行参数等,按优先级覆盖。

  • 事务管理 :使用@EnableTransactionManagement开启,Service方法上加@Transactional注解。

  • 异步调用 :方法上加@Async注解,启动类加@EnableAsync使注解生效。

监控与安全

  • Spring Boot Actuator :提供生产功能端点,如/beans查看Bean装配报告,/shutdown关闭应用(需开启),/info查看应用信息等。

  • 安全性 :使用spring-boot-starter-security依赖,配置类扩展WebSecurityConfigurerAdapter实现安全配置。与Shiro相比,Spring Security更重量级、功能强大但配置繁琐;Shiro轻量级、简单。

性能优化与部署

  • 性能优化 :如不使用@SpringBootApplication指定扫包范围,设置JVM初始内存和最大内存相同,将内置服务器换为Undertow等。

  • 热部署 :使用DevTools模块,保存更改后嵌入式Tomcat重启,提高开发效率,生产环境禁用。

其他

  • YAML :人类可读的数据序列化语言,结构化、简洁明了,支持数组等复杂属性,配置有序,相比properties更适用于复杂配置,但不支持@PropertySource注解导入自定义配置。

  • 多模块开发 :可将不同功能模块化,便于管理和维护,如common模块放公共代码和配置。

本书免费下载地址


    关注微信公众号“人工智能产业链union”回复关键字“AI面试23”获取下载地址。

往期推荐:
【AI加油站】AI面试专题一:BIO,NIO,AIO,Netty面试题(附下载)
【AI加油站】AI面试专题二:Git常用命令面试题(附下载)
【AI加油站】AI面试专题三:Java常用面试题(附下载)
【AI加油站】AI面试专题四:Linux系统的面试题集(附下载)
【AI加油站】AI面试专题五:Memcached面试题集(附下载)
【AI加油站】AI面试专题六:MyBatis框架的面试题(附下载)
【AI加油站】AI面试专题七:MySQL相关的面试题资料(附下载)
【AI加油站】AI面试专题八:Netty面试题资料(附下载)
【AI加油站】AI面试专题九:Nginx的面试题资料(附下载)
【AI加油站】AI面试专题十:RabbitMQ的面试题资料(附下载)
【AI加油站】AI面试专题十一:Redis的面试题资料(附PDF下载)
【AI加油站】AI面试专题十二:Spring的面试题资料(附PDF下载)
【AI加油站】AI面试专题十三:Apache Tomcat的面试题资料(附PDF下载)
【AI加油站】AI面试专题十四:Zookeeper的面试题资料(附PDF下载)
【AI加油站】AI面试专题十五:《阿里巴巴Java开发手册》终极版的面试题资料(附PDF下载)
【AI加油站】AI面试专题十六:大数据技术面试题资料(附PDF下载)
【AI加油站】AI面试专题十七:Java并发多线程面试题资料(附PDF下载)
【AI加油站】AI面试专题十八:设计模式的面试题资料(附PDF下载)
【AI加油站】AI面试专题十九:Java虚拟机(JVM)的面试题资料(附PDF下载)
【AI加油站】AI面试专题二十:Elasticsearch的面试题资料(附PDF下载)