四、yml文件的写法

本文详细介绍Spring Boot中配置文件的创建与使用,包括properties与yml/yaml文件的区别及编写规则,如何通过绑定类获取配置文件的值,以及YAML语法特点如对象、数组的定义方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建一个新的工程

注意:只有properties文件,没有包含yaml文件

 

2.创建一个yml文件

全局配置配置文件,文件名是固定的application
作用:修改SpringBoot自动配置的默认值,一般SpringBoot底层都给我们配置好了。
YMAL:以数据为中心,比xml和json更适合作为配置文件。
application.properties
application.yml和yaml实际是一样的效果

properties和yml配置编写不一样

加载顺序:properties会覆盖yml

3.yml编写语法(赋值)

k:(空格)v :表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,就是同一层级,几个空格不重要。
属性和值是大小写敏感。
字面量:普通值(数字、字符串、布尔)
        字符串默认不用加上单引号或者双引号。
        "": 双引号,不会自动转义字符串里面的特殊字符串;特殊字符会作为本身想表示的意思。
            name: "zhangsan \n lisi" -》输出:zhangsan 换行 lisi
        '': 单引号,会自动转义字符串里面的特殊字符串;下面的 \ 自动转义成了 \\
            name: "zhangsan \n lisi" -》输出:zhangsan \n lisi
对象(List、Map、键值对形式)
k:v: 在下一行写对象的属性和值;注意缩进
    对象还是 k: v 的方式
    friends:
        lastName: zhangsan
        age: 20
行内写法: friends: {lastName: zhangsan, age: 18}
数组(List、Set)
用 -值表示数组中的元素
pets:
 - cat
 - dog
 - pig
行内写法: pets: [cat,dog,pig];

4.获取配置文件值

绑定 类 和 配置文件 ,这样就有提示了

1 导入后就有提示了
2 <dependency>
3     <groupId>org.springframework.boot</groupId>
4     <artifactId>spring-boot-configuration-processor</artifactId>
5     <optional>true</optional>
6 </dependency>

特别注意:lastName和last-name是一个意思,- 后面第一个字母表示大写。

 

取配置文件里面的值输出

 

源码

https://files.cnblogs.com/files/jtfr/spring-boot-02-config.zip

转载于:https://www.cnblogs.com/jtfr/p/10434457.html

<think>好的,我现在需要处理用户关于如何在Spring Boot项目中使用YAML(yml文件配置MyBatis跨模块访问的问题。首先,回顾之前的对话,用户已经询问过如何在多模块项目中配置MyBatis,现在用户进一步询问关于YAML文件的具体配置方法。这说明用户可能在使用properties文件的基础上,希望转换为YAML格式,或者想了解YAML的相关配置。 我需要确保回答准确,并且覆盖用户可能的疑问点。首先,YAML和properties文件在功能上是等价的,只是语法不同。用户可能已经知道如何在properties中配置,但需要对应的YAML写法。因此,我需要将之前提到的properties配置示例转化为YAML格式,并解释其结构。 接下来,用户的问题可能涉及几个方面:如何在YAML中设置mybatis的mapper-locations,以及如何处理多模块项目中的资源路径。同时,用户可能遇到配置错误,例如路径不正确或资源未正确打包,需要给出解决方案。 需要检查之前的回答中提到的关键点,如模块依赖、Mapper接口扫描、XML文件路径配置和资源打包。现在用YAML重新表达这些配置,并确保语法正确。同时,可能需要补充YAML特有的注意事项,比如缩进和层次结构是否正确,避免常见的格式错误。 另外,用户可能想知道YAML相对于properties文件的优势,例如更清晰的结构和更好的可读性,特别是对于复杂配置的情况。可以简要提及这一点,但重点还是放在具体配置步骤上。 需要确保示例代码正确,比如在YAML中如何表示classpath通配符,以及多模块资源路径的指定方式。同时,提醒用户在core-module的pom.xml中正确配置资源包含,确保XML文件被打包到生成的jar中,否则即使YAML配置正确,应用也无法找到这些文件。 最后,常见问题部分需要更新,针对YAML配置可能出现的问题,比如缩进错误导致配置未生效,或者路径格式不正确。同时,确认用户是否了解YAML的基本语法,避免因格式问题引起的配置错误。 总结下来,回答的结构应包括YAML配置的转换示例、资源打包配置、常见问题及解决方案,以及可能的扩展建议。需要保持回答清晰,步骤明确,帮助用户顺利实现跨模块配置。</think>以下是针对 **YAML** 文件的配置方法,结合 MyBatis 跨模块场景的详细说明: --- ### 一、YAML 配置与 Properties 对比 | **特性** | **Properties 格式** | **YAML 格式** | |------------------|----------------------------------------|-------------------------------------------| | 语法 | 键值对(`key=value`) | 缩进层级结构 | | 多模块路径配置 | `mybatis.mapper-locations=classpath*:/mapper/*.xml` | 使用列表格式定义多个路径 | | 可读性 | 简单但冗长 | 结构清晰,适合复杂配置 | --- ### 二、YAML 文件关键配置步骤 #### 1. 配置 MyBatis 扫描跨模块 XML 在 `app-module` 的 `application.yml` 中添加: ```yaml mybatis: mapper-locations: - "classpath*:mapper/**/*.xml" # 模糊匹配所有模块下的 mapper 目录 - "classpath*:com/example/core/mapper/*.xml" # 精确匹配 core-module 的 XML ``` #### 2. 指定数据源与 MyBatis 其他配置 ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/db_test username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver mybatis: configuration: map-underscore-to-camel-case: true # 开启驼峰命名映射 lazy-loading-enabled: true ``` --- ### 三、多模块资源打包配置(核心) 在 `core-module` 的 `pom.xml` 中**必须确保 XML 被打包**: ```xml <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <!-- 包含 XML 文件 --> </includes> </resource> <!-- 如果 XML 放在 src/main/java 下 --> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build> ``` --- ### 、常见问题与解决 #### 1. YAML 配置未生效 - ❌ **现象**:配置项被忽略 - ✅ **检查**: - 缩进必须使用**空格**(不能使用 Tab) - 层级对齐(例如 `mybatis.configuration` 是 `mybatis` 的子属性) #### 2. XML 路径匹配失败 - ❌ **现象**:`Invalid bound statement (not found)` - ✅ **调试方法**: 1. 查看最终 JAR 包内容,确认 XML 文件位置: ```bash jar tf core-module-1.0.0.jar | grep "UserMapper.xml" ``` 2. 使用 `classpath*:` 前缀确保跨模块扫描 #### 3. 多模块依赖冲突 - ✅ **解决方案**:在父 POM 中统一管理依赖版本: ```xml <dependencyManagement> <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> </dependencies> </dependencyManagement> ``` --- ### 五、扩展技巧 #### 1. 多环境配置 通过 `application-{profile}.yml` 实现环境隔离: ```yaml # application-dev.yml(开发环境) spring: datasource: url: jdbc:mysql://dev-server:3306/db_test --- # application-prod.yml(生产环境) spring: datasource: url: jdbc:mysql://prod-server:3306/db_prod ``` #### 2. YAML 合并配置 使用 `spring.config.import` 动态加载其他模块配置: ```yaml spring: config: import: - classpath:core-module-config.yml # 引入其他模块的配置 ``` --- 通过 YAML 的层级结构,可以更清晰地管理跨模块 MyBatis 配置。**核心要点**:正确配置资源路径、确保 XML 文件打包、注意 YAML 语法细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值