Spring Boot 的约定优于配置,你的理解是什么?

文章目录

含义

"约定优于配置" 指的是在 Spring Boot 框架中,对于常见的开发场景和需求,框架预先设定了一系列合理的默认配置和开发约定。开发者在大多数情况下只需遵循这些约定,无需手动编写大量繁琐的配置代码,框架就能自动完成相应的配置工作。只有当默认配置无法满足特定需求时,开发者才需要通过显式的配置来覆盖默认设置。

一、项目结构约定

Spring Boot 对项目的目录结构有着明确且通用的规范。典型的 Maven 或 Gradle 项目结构如下:

bash 复制代码
src
├── main
│   ├── java
│   │   └── com
│   │       └── example
│   │           └── myproject
│   │               ├── Application.java (主应用启动类)
│   │               ├── controller
│   │               ├── service
│   │               ├── repository
│   │               └── ...
│   ├── resources
│   │   ├── application.properties 或 application.yml (全局配置文件)
│   │   ├── static (存放静态资源,如 CSS、JavaScript、图片等)
│   │   └── templates (存放模板文件,如 Thymeleaf 模板)
└── test
    ├── java
    └── resources

遵循这样的结构,Spring Boot 能自动扫描和识别各类组件,例如,将 @Controller 注解标注的类识别为控制器,@Service 注解标注的类识别为服务层组件等。

二、自动配置机制

这是 "约定优于配置" 原则的关键体现。Spring Boot 根据项目中引入的依赖自动进行配置。

  • Web 开发场景:引入 spring-boot-starter-web 依赖后,Spring Boot 会自动配置嵌入式 Servlet 容器(如 Tomcat、Jetty 或 Undertow),并创建 Spring MVC 所需的上下文环境,包括 DispatcherServlet 等核心组件,开发者无需手动进行 Servlet 容器和 MVC 相关的配置。
  • 数据库访问场景:引入 spring-boot-starter-data-jpa 依赖,Spring Boot 会自动配置数据源、JPA 实体管理器、事务管理器等,让开发者可以直接使用 JPA 进行数据库操作,无需编写大量的数据库连接和配置代码。

三、默认配置值

Spring Boot 为众多配置项提供了合理的默认值。

  • 服务器端口:嵌入式 Servlet 容器默认监听的端口是 8080,开发者若没有特殊需求,无需进行端口配置;若要修改端口,可在 application.properties 或 application.yml 中添加 server.port = 8081 这样的配置。
  • 日志配置:Spring Boot 默认使用 Logback 作为日志框架,默认的日志级别是 INFO,开发者可根据需要在配置文件中调整日志级别和输出格式。

四、命名约定

在 Spring Boot 中,命名也遵循一定的约定。

  • JPA 实体与数据库表映射:实体类的属性名和数据库表的列名通常默认保持一致,除非使用 @Column 注解进行显式指定。例如,实体类 User 中的 username 属性,默认会映射到数据库表中的 username 列。
  • Bean 命名:Spring Boot 会根据类名自动生成 Bean 的名称,一般是将类名的首字母小写作为 Bean 名称。例如,UserService 类的 Bean 名称默认为 userService。

五、优势

1、提升开发效率

开发者无需在项目搭建和基础配置上花费大量时间,能够将更多精力投入到业务逻辑的实现中,显著加快项目的开发进度。

2.、降低学习成本

对于初学者而言,遵循 Spring Boot 的约定可以快速上手开发,减少因复杂配置带来的学习负担和出错概率。

3、增强代码一致性

项目遵循统一的约定,代码结构和配置方式具有较高的一致性,便于团队协作开发和代码的后续维护。

六、局限性

1、灵活性受限

当项目有特殊需求,需要偏离默认约定时,可能需要花费额外的精力进行配置,甚至需要对 Spring Boot 的自动配置机制有深入了解才能实现。

2、调试难度增加

由于自动配置的存在,某些问题可能难以定位,开发者可能不清楚框架在背后做了哪些配置,排查问题时需要对框架的运行机制有一定的掌握。

综上所述,"约定优于配置" 原则让 Spring Boot 成为一个高效、易用的开发框架,但开发者也需要在遵循约定和满足特殊需求之间找到平衡。

相关推荐
风铃儿~26 分钟前
Spring AI 入门:Java 开发者的生成式 AI 实践之路
java·人工智能·spring
斯普信专业组31 分钟前
Tomcat全方位监控实施方案指南
java·tomcat
忆雾屿42 分钟前
云原生时代 Kafka 深度实践:06原理剖析与源码解读
java·后端·云原生·kafka
武昌库里写JAVA1 小时前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
gaoliheng0061 小时前
Redis看门狗机制
java·数据库·redis
我是唐青枫1 小时前
.NET AOT 详解
java·服务器·.net
小白杨树树1 小时前
【WebSocket】SpringBoot项目中使用WebSocket
spring boot·websocket·网络协议
Su米苏1 小时前
Axios请求超时重发机制
java
Undoom2 小时前
🔥支付宝百宝箱新体验!途韵归旅小帮手,让高铁归途变旅行
后端
不超限2 小时前
Asp.net Core 通过依赖注入的方式获取用户
后端·asp.net