Spring Boot 的核心设计理念是 ​​"约定优于配置"​​(Convention Over Configuration),旨在简化 Spring 应用的初始搭建和开发过程。以下是需要掌握的核心基础要点:


一、核心机制

  1. 自动配置 (Auto-Configuration)​

    • 通过 spring-boot-autoconfigure 自动配置 Bean
    • 条件注解控制:@ConditionalOnClass, @ConditionalOnMissingBean
    • 查看自动配置报告:启动时添加 --debug 参数
  2. 起步依赖 (Starter Dependencies)​

    • 一站式引入相关技术栈(如 spring-boot-starter-web 包含 Web+Tomcat+JSON)
    • 避免版本冲突(由 Spring Boot 统一管理)

二、核心注解

注解作用
@SpringBootApplication复合注解:@Configuration + @ComponentScan + @EnableAutoConfiguration
@RestController等价于 @Controller + @ResponseBody
@ConfigurationProperties将配置文件绑定到 Java 对象(如 application.yml 中的属性)
@EnableConfigurationProperties启用配置绑定

三、配置文件

  1. 优先级​(从高到低):

    命令行参数 > 外部配置文件 > 内部配置文件
    • 内部配置文件:application.properties > application.yml
    • 外部配置文件:Jar 包同级目录的 /config 文件夹 > 根目录
  2. 多环境配置

    # application-dev.yml
    server:port: 8081
    ---
    # application-prod.yml
    server:port: 80
    • 激活环境:spring.profiles.active=dev

四、常用功能组件

  1. 数据访问

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    • 无需配置数据源:默认使用内存数据库(H2)
    • 自定义数据源:spring.datasource.url=jdbc:mysql:///test
  2. Web MVC

    • 静态资源路径:/static, /public, /resources, /META-INF/resources
    • 拦截器配置:
      @Override
      public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new AuthInterceptor()).addPathPatterns("/api/**");
      }
  3. 事务管理

    @Transactional  // 直接在 Service 层添加注解
    public void updateUser(User user) {userRepository.save(user);logRepository.insertLog(user);
    }

五、运维监控

  1. Actuator 健康检查

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    • 暴露端点:management.endpoints.web.exposure.include=health,info,metrics
    • 访问:http://localhost:8080/actuator/health
  2. 日志配置

    # application.properties
    logging.level.root=INFO
    logging.level.com.example.service=DEBUG
    logging.file.name=app.log

六、最佳实践

  1. 目录结构规范

    src/main/java└─ com.example├─ Application.java        # 主启动类├─ controller├─ service├─ repository└─ config
  2. 全局异常处理

    @ControllerAdvice
    public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public ResponseEntity<String> handleException(Exception ex) {return ResponseEntity.status(500).body("服务器开小差了");}
    }
  3. 热部署技巧

    <!-- spring-boot-devtools 依赖 -->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional>
    </dependency>
    • 修改代码后自动重启(IDEA 需开启 Build > Compiler > Build project automatically

七、调试技巧

  1. 查看自动配置列表
    java -jar your-app.jar --debug
  2. Bean 依赖关系图
    @SpringBootApplication
    public class Application {public static void main(String[] args) {// 启动时打印Bean图new SpringApplicationBuilder(Application.class).logStartupInfo(true).run(args);}
    }

避坑指南​:

  1. 避免使用 @Autowired 注入静态变量(使用 setter 注入)
  2. 不要在主类中写业务逻辑(保持为纯启动入口)
  3. 多环境配置务必关闭 spring.config.use-delimiter(防止YAML解析错误)

终极建议​:理解自动配置原理比死记配置更重要,遇到问题时查看 spring-boot-autoconfigure 源码。掌握基础后,再配合之前的"骚操作",可大幅提升开发效率!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918564.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918564.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918564.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lesson36:MySQL从入门到精通:全面掌握数据库操作与核心原理

目录 一、引言&#xff1a;为什么选择MySQL&#xff1f; 二、MySQL安装与登录配置 2.1 环境准备 2.2 登录指令详解 三、数据库核心操作 3.1 数据库生命周期管理 3.2 数据库存储引擎选择 四、数据表设计与操作 4.1 表结构创建&#xff08;含数据类型详解&#xff09; …

Spring源码解析 - SpringApplication run流程-prepareContext源码分析

prepareContext源码分析 private void prepareContext(DefaultBootstrapContext bootstrapContext, ConfigurableApplicationContext context,ConfigurableEnvironment environment, SpringApplicationRunListeners listeners,ApplicationArguments applicationArguments, Bann…

HIS系统:医院信息化建设的核心,采用Angular+Java技术栈,集成MySQL、Redis等技术,实现医院全业务流程管理。

HIS系统在医院信息化建设中扮演着核心的角色。它是一个综合性的信息系统&#xff0c;旨在管理和运营医院的各种业务&#xff0c;包括门诊、住院、财务、物资、科研等。技术细节&#xff1a;前端&#xff1a;AngularNginx后台&#xff1a;JavaSpring&#xff0c;SpringBoot&…

深度学习-卷积神经网络-LeNet

卷积神经网络是一种专门用于处理具有网格结构数据&#xff08;如图像、音频等&#xff09;的深度学习模型。它通过卷积层自动提取数据中的特征&#xff0c;利用局部连接和参数共享的特性减少了模型的参数数量&#xff0c;降低了过拟合的风险&#xff0c;同时能够有效地捕捉数据…

【Java项目与数据库、Maven的关系详解】

Java项目与数据库、Maven的关系详解 一、Java项目是否都需要连接本地数据库&#xff1f; 不一定&#xff0c;这取决于项目类型和需求&#xff1a; 1. 需要数据库的项目类型项目类型数据库作用典型场景Web应用存储用户数据/业务数据电商系统、CMS服务端程序持久化数据金融交易系…

两个Maven工程,使用idea开发,工程A中依赖了工程B,改了工程B,工程A如何获取最新代码

两个Maven工程&#xff0c;使用idea开发&#xff0c;工程A中依赖了工程B&#xff0c;改了工程B&#xff0c;工程A如何获取最新代码 如果工程B的版本是快照&#xff0c;那么如下。 步骤一 工程B 执行 clean package install deploy 步骤二 工程A 刷新Maven

奥比中光与地平线、地瓜机器人达成战略合作,携手推动机器人智能化

摘要&#xff1a;机器人“慧眼”与“智脑”强强联合&#xff01;8月11日&#xff0c;奥比中光与地平线及其控股子公司地瓜机器人在北京签订合作协议&#xff0c;双方将在机器人智能化领域展开深度合作&#xff0c;充分发挥各自的技术与产品优势&#xff0c;携手推动机器人产业的…

【Linux】Tomcat

Tomcat简介Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和 并发访问用户不是很多的场合下被普遍使用&#xff0c;Tomcat 具有处理HTML页面的功能&#xff0c;它还是一个Servlet和 JSP容器Tomcat的使用安装ja…

Putting it all together 将所有内容整合在一起

官方链接 https://www.youtube.com/watch?vAa_FAA3v22g&t1s Task1 Putting It All Together 将所有内容整合在一起 图片版 文字版 Putting It All Together 将所有内容整合在一起 From the previous modules, youll have learned that quite a lot of things go on b…

Python 闭包详解:从变量作用域到实战案例

一、变量作用域基础在 Python 中&#xff0c;变量根据作用范围可分为三类&#xff1a;全局变量&#xff1a;定义在函数外部的变量&#xff0c;作用范围是整个程序。如果在函数内部需要修改全局变量&#xff0c;必须使用global关键字声明。局部变量&#xff1a;定义在函数内部的…

Docker 跨主机容器之间的通信macvlan

默认一个物理网卡&#xff0c;只有一个物理mac地址&#xff0c;虚拟多个mac地址 缺点&#xff1a;每次需要手动配置ip地址&#xff0c;容易ip地址冲突。类似于保存到execl表格里面。 两台物理机&#xff1a; docker-01和docker-02 创建macvlan网络 [rootdocker-01 ~]# docker n…

android 换肤框架详解1-换肤逻辑基本

android 换肤框架详解1-换肤逻辑基本-CSDN博客 android 换肤框架详解2-LayoutInflater源码解析-CSDN博客 android 换肤框架详解3-自动换肤原理梳理-CSDN博客 换肤框架流程 1&#xff0c;通过AssetManager获取换肤的资源文件 2&#xff0c;通过原文件中的resId获取到res名称…

NEON性能优化总结

转自 NEON优化&#xff1a;性能优化经验总结-CSDN博客 NEON优化&#xff1a;性能优化经验总结 1. 什么是 NEON Arm Adv SIMD 历史 2. 寄存器 3. NEON 命名方式 4. 优化技巧 5. 优化 NEON 代码(Armv7-A内容&#xff0c;但区别不大) 5.1 优化 NEON 汇编代码 …

计算机网络摘星题库800题笔记 第2章 物理层

第2章 物理层2.1 物理层概述题组闯关1.采用以下哪种设备&#xff0c;可以使数字信号传输得更远 ( )。 A. 放大器 B. 中继器 C. 网桥 D. 路由器1.【参考答案】B 【解析】选项 A 放大器只是单纯地放大信号、抑制噪音和干扰。选项 B 中继器是把一根线缆中的电或者光信号传递给另一…

导入文件到iPhone实现

我们有时候开发需要加载一些自己的文件&#xff0c;这个时候就需要导入文件到iPhone等设备。在info里面open as source code&#xff0c;加入如下配置&#xff1a;<!-- 开启 iTunes / Finder 文件共享 --><key>UIFileSharingEnabled</key><true/>或者o…

Ubuntu Server系统安装磁盘分区方案

最近打算把家里的旧电脑利用起来&#xff0c;装上Ubuntu Server 24.04.3 LTS作为一个家用NAS服务器&#xff0c;但是给旧电脑安装系统时遇到了一些问题&#xff0c;遂记录下来 GPT分区与MBR分区 GPT 指的是 GUID Partition Table&#xff08;全局唯一标识分区表&#xff09;&am…

1小时 MySQL 数据库基础速通

目录 一、MySQL安装配置 1、下载mysql 2、下载mysql-shell 二、MySQL基本概念 1. 数据库&#xff08;Database&#xff09; 2. 表&#xff08;Table&#xff09; 3. 数据类型&#xff08;Data Type&#xff09; 4. 主键&#xff08;Primary Key&#xff09; 5. 索引&am…

HTTP应用层协议-长连接

HTTP应用层协议-长连接 关于 connection 报头 HTTP 中的 Connection 字段是 HTTP 报文头的一部分&#xff0c;它主要用于控制和管理客户端与服务器之间的连接状态 核心作用 • 管理持久连接&#xff1a;Connection 字段还用于管理持久连接&#xff08;也称为长连接&#xff09;…

2020/12 JLPT听力原文 问题一 4番

4番&#xff1a;ホテルの受付で女の人と男の人が話しています。女の人はどこでパソコンを使いますか。女&#xff1a;すみません、パソコンの貸出ってできますか。部屋で仕事をしたいんですけど。 男&#xff1a;申し訳ございません。貸出はしていないんですが、二階にビジネス…

《在 Spring Boot 中安全使用 Qwen API-KEY:环境变量替代明文配置的最佳实践》

《在 Spring Boot 中安全使用 Qwen API-KEY&#xff1a;环境变量替代明文配置的最佳实践》 想要的效果其实就是 把 Qwen API-KEY 放到系统环境变量中&#xff0c;然后在 application.yml 里通过占位符读取&#xff0c;而不写明文。 这样即便 application.yml 被提交到 Git&…