[面试] Spring Boot 的约定优于配置,你怎么理解

Spring Boot 的“约定优于配置”(Convention over Configuration, CoC) 设计原则是指框架预先定义了一系列默认配置和最佳实践,使得开发者在创建和维护应用时,能够尽可能地减少显式的配置工作,只需遵循框架设定的约定即可快速构建应用。通过这种方式,Spring Boot 提升了开发效率,降低了初学者的学习曲线,并鼓励了一致性和简洁性。

以下是 Spring Boot 中“约定优于配置”的几个关键体现:

  1. 自动配置

    • Spring Boot 自动配置功能根据项目类路径下的jar包依赖关系,自动配置相应的Bean。例如,如果检测到HSQLDB数据库驱动在类路径下,它会自动配置一个嵌入式数据库实例和相关的JPA/Hibernate设置,开发者无需编写任何XML配置或Java配置类来启用这些功能。

    示例:

    // 如果项目中引入了spring-boot-starter-data-jpa依赖
    // 则Spring Boot会自动配置DataSource、EntityManagerFactory等Bean
    // 开发者只需要编写Repository接口和实体类即可实现基本的数据库操作
    
  2. 启动器(Starter POMs)

    • Spring Boot提供了一系列的启动器,它们是预定义的一组依赖集合,简化了Maven/Gradle构建配置。只需引入如spring-boot-starter-web这样的启动器,就包含了构建Web应用所需的全部依赖,不需要逐一列出每个依赖项。
  3. 目录结构约定

    • Spring Boot遵循一定的目录结构约定,例如静态资源默认放在src/main/resources/staticsrc/main/resources/public目录下,模板文件默认在src/main/resources/templates下,这样框架就能自动识别并处理这些资源。
  4. 属性文件加载

    • Spring Boot自动加载application.propertiesapplication.yml配置文件,遵循特定命名规则的配置文件可按需覆盖默认值。
  5. 组件扫描

    • 使用@SpringBootApplication注解的主类会自动开启组件扫描,找到标记有@Component及其衍生注解(如@Service, @Repository, @Controller等)的类,并将其注入到Spring IoC容器中,无需显示声明<context:component-scan>标签。
  6. 端点(endpoints)和监控

    • 内置了很多健康检查、审计和监控端点,按照约定的URL即可访问,无需额外配置。
  7. 嵌入式服务器

    • 默认集成了Tomcat、Jetty或Undertow作为嵌入式Web服务器,简化部署流程,开发者无需单独配置和部署Servlet容器。
  8. @ConfigurationProperties

    • 只需在类上使用@ConfigurationProperties注解并关联一个前缀,Spring Boot就可以自动绑定配置文件中对应前缀下的所有配置项到这个类的属性上,省去了繁琐的手动配置过程。

示例:

// application.properties
myapp.datasource.url=jdbc:mysql://localhost/mydb
myapp.datasource.username=root
myapp.datasource.password=secret

// Java类
@ConfigurationProperties(prefix = "myapp.datasource")
public class DataSourceProperties {
    private String url;
    private String username;
    private String password;

    // getters and setters...
}

// 主配置类
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在此示例中,DataSourceProperties类会自动与application.properties中的myapp.datasource前缀下的配置项进行绑定,无需手工编写Bean来注入这些配置信息。

更多精彩内容请关注☄公众号: Coder无霸哥
不要让我们追赶知识, 要让知识追赶我们~

  • 26
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值