SpringBoot:@ConfigurationProperties@PropertySource@ImportResource 喜欢ヅ旅行 2022-01-22 12:35 326阅读 0赞 # Spring Boot的配置文件 # **1.Spring Boot使用一个全局配置文件,放置在src/main/resources目录或类路径/config下:** * application.properties * application.yml **2.配置文件的作用:修改Spring Boot自动配置的默认值** **3.yml时YAML(YAML Ain't Markup Language)不是一个标记语言** * 标记语言,以前的配置文件,大多数使用的是xml文件进行配置,例如web.xml * YAML:以数据为中心,配置数据的时候具有面向对象的特征;比json、xml等更适合做配置文件 # YAML语法格式 # 1. key: value表示一对键值对(冒号后面必须有空格) 2. 使用空格缩进表示层级关系 3. 左侧缩进的空格数目不重要,只要同一层级的元素左侧对齐即可 4. key与value大小写敏感 ![20190606113548632.png][] # YAML常用写法 # * 字面量:数值、字符串、布尔、日期 * 对象&Map key: value存储对象,每个值换一行写 ![20190606115614968.png][] 行内写法 ![20190606115643421.png][] * 数组(List,Set) 用 - 值表示数组中的一个元素 ![20190606135123373.png][] 行内写法 ![20190606135202852.png][] # yaml配置文件注入值 # /** * 1、@ConfigurationProperties告诉SpringBoot将配置文件对应的属性映射到这个组件类中,自动进行一一绑定 * 2、prefix = "emp"配置文件的前缀名 * 3、@Component 必须将当前组件作为SpringBoot中的一个组件,才能使用容器提供的@ConfigurationProperties功能 * */ @ConfigurationProperties(prefix = "emp") @Component @Data public class Emp { private String lastName; private Integer age; private Double salary; private Boolean boss; private Date birthday; private Map map; private List list; } # yml文件配置 # ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1OTMzMjQ5_size_16_color_FFFFFF_t_70][] # 比较@Value和@ConfigurationProperties获取值 # 使用@Value获取值,把Emp类中@ConfigurationProperties注释掉 //@ConfigurationProperties(prefix = "emp") @Component @Data public class Emp { @Value("${emp.lastName}")//${key}从配置文件中获取值 private String lastName; private Integer age; @Value("#{2*2000}")//#{SpEL}表达式 private Double salary; private Boolean boss; private Date birthday; private Map map; private List list; } <table> <tbody> <tr> <td> </td> <td>@ConfigurationProperties</td> <td>@Value</td> <td>示例</td> </tr> <tr> <td>实现功能</td> <td>批量注入配置文件的属性值</td> <td>一个一个指定</td> <td> </td> </tr> <tr> <td>松散绑定</td> <td>支持</td> <td>不支持</td> <td> <p>last_name==lastName</p> <p>last-name == lastName</p> </td> </tr> <tr> <td>SpEL</td> <td>不支持</td> <td>支持</td> <td>#{10*2}</td> </tr> <tr> <td>复杂类型封装</td> <td>支持</td> <td>不支持</td> <td> </td> </tr> <tr> <td>JSR303数据校验</td> <td>支持</td> <td>不支持</td> <td> </td> </tr> </tbody> </table> # 加载指定配置文件@PropertySource(加载局部配置文件) # @ConfigurationProperties默认从全局配置文件(application.properties/application.yml)中获取值,所有的配置数据都写在全局配置文件中,显的过于臃肿,放到其他局部配置文件中。 @PropertySource:用于加载局部配置文件。 将全局配置文件中的相关的emp数据抽取到/resource/emp.properties ![20190606144259909.png][] # **@ImportResource使用xml配置** # SpringBoot提倡无xml配置,但实际开发中可能会有一些特殊要求要求是用xml配置,我们可以通过@importResource来加载配置文件。 ![20190606144715531.png][] [20190606113548632.png]: /images/20220122/8b7d54801464405991f7413af762a93f.png [20190606115614968.png]: /images/20220122/4d59614443444ce2a5b4ec876b068344.png [20190606115643421.png]: /images/20220122/65597db4c7404357be84449713cc057f.png [20190606135123373.png]: /images/20220122/ca48f9d00f3647309c0ecb87bb84ce0b.png [20190606135202852.png]: /images/20220122/c9511c3d98454f51bb456026e3f54f58.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1OTMzMjQ5_size_16_color_FFFFFF_t_70]: /images/20220122/44e88901d0f349f4b1880745de62c334.png [20190606144259909.png]: /images/20220122/3230f36bdb6b4e08a8644463e240bde7.png [20190606144715531.png]: /images/20220122/a04a4622386342b5b11f43b3b26db754.png
还没有评论,来说两句吧...