参考文章】:SpringBoot之@EnableConfigurationProperties分析

【参考文章】:在Spring Boot中使用 @ConfigurationProperties 注解, @EnableConfigurationProperties

1. pom

        <!-- 通过资源文件注入属性配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

2. main方法上添加注解

  @EnableConfigurationProperties(配置类1.class)

  @EnableConfigurationProperties({配置类1.class,配置类2.class})

  该注解是用来开启对@ConfigurationProperties注解配置Bean的支持,也就是@EnableConfigurationProperties注解告诉Spring Boot 能支持@ConfigurationProperties。

@SpringBootApplication
@EnableConfigurationProperties(SystemConfig.class)
public class BootApplication { public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(BootApplication.class, args);
System.out.println("start ok");
}

3. 配置类

  配置参数在 application.yml 文件中,系统自动读取该文件,所以不必指定配置文件;

  @ConfigurationProperties (prefix = "system",ignoreInvalidFields = false ,ignoreUnknownFields = true) 

  prefix :表示参数 key 的前缀;

  ignoreInvalidFields :忽略无效的属性,默认为 false;

  ignoreUnknownFields :忽略未知的属性,默认为 true;

  如果需要指定配置文件,则需要使用添加 @PropertySource 注解(测试时读取不到配置文件,待解决);

  @PropertySource(value = "filepath",encoding = "utf8",ignoreResourceNotFound = false)

  value:文件路径;

  encoding:文件编码格式;

  ignoreResourceNotFound:忽略未找到的资源文件,默认为false;

@ConfigurationProperties(prefix = "system")
public class SystemConfig {
private Integer type; public SystemConfig() {
System.out.println("SystemConfig");
} public Integer getType() {
return type;
} public void setType(Integer type) {
this.type = type;
}
}

4. 配置文件

4.1 yml 文件

system:
type: 2

4.2 properties 文件

system.type=2

5. 常见问题

5.1 是否添加@Configuration 注解(原因暂不明确)

  初始化其他Bean时如果依赖配置类,则配置类不能添加@Configuration注解,否则spring会提示有两个bean,必须指定一个bean;

  实例化其他Bean时如果不依赖配置类,配置类添加@Configuration注解也可以正常运行;

Spring boot 配置文件参数映射到配置类属性的更多相关文章

  1. Spring boot运行原理-自定义自动配置类

    在前面SpringBoot的文章中介绍了SpringBoot的基本配置,今天我们将给大家讲一讲SpringBoot的运行原理,然后根据原理我们自定义一个starter pom. 本章对于后续继续学习S ...

  2. Spring Boot 配置文件和命令行配置

    Spring Boot 属于约定大于配置,就是说 Spring Boot 推荐不做配置,很多都是默认配置,但如果想要配置系统,使得软件符合业务定义,Spring Boot 可以通过多种方式进行配置. ...

  3. 详解Spring Boot配置文件之多环境配置

    一. 多环境配置的好处: 1.不同环境配置可以配置不同的参数~ 2.便于部署,提高效率,减少出错~ 二. properties多环境配置 1. 配置激活选项 spring.profiles.activ ...

  4. spring mvc \ spring boot 允许跨域请求 配置类

    用@Component 注释下,随便放个地方就可以了 package com.chinaws.wsarchivesserver.core.config; import org.springframew ...

  5. Springboot 系列(二)Spring Boot 配置文件

    注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 不管是通过官方提供的方式获取 Spring ...

  6. 史上最全的Spring Boot配置文件详解

    Spring Boot在工作中是用到的越来越广泛了,简单方便,有了它,效率提高不知道多少倍.Spring Boot配置文件对Spring Boot来说就是入门和基础,经常会用到,所以写下做个总结以便日 ...

  7. Spring Boot 配置文件中的花样,看这一篇足矣!

    在快速入门一节中,我们轻松的实现了一个简单的RESTful API应用,体验了一下Spring Boot给我们带来的诸多优点,我们用非常少的代码量就成功的实现了一个Web应用,这是传统的Spring应 ...

  8. Spring Boot 配置文件中的花样

    原文:https://www.cnblogs.com/didispace/p/11002732.html 在快速入门一节中,我们轻松的实现了一个简单的RESTful API应用,体验了一下Spring ...

  9. springboot批量读取参数映射到实体类

    spring读取配置参数可以通过${name}的方式获取,如properties文件中存在如下配置 person.username=xi 则可通过${person.username}获取其对应的值xi ...

随机推荐

  1. Android Studio2.0 教程从入门到精通Windows版 - 提高篇

    第二篇我们开发了一个Hello World应用,并介绍Android Sutdio的界面和如何调试应用,接下来将介绍一些常用的快捷键和必备插件. 常用快捷键 代码跳转 描述:跳转是为了方便代码位置的定 ...

  2. <Dare To Dream 团队>第二次作业:基于B/S的家教管理系统

     团队项目GitHub仓库地址:https://github.com/Sophur/Team-Project.git  为其他团队评分结果: 小组名 N A B C D 总分 平均分 Blue Flk ...

  3. cmake find_package 中,include_directories,target_link_libraries 的值怎么知道?

    拿Sophus库为例: find_package(Sophus REQUIRED) include_directories(${Sophus_INCLUDE_DIRS}) target_link_li ...

  4. electron-vue 淘宝源

    yarn-js config set registry https://registry.npm.taobao.org

  5. DOM 扩展

    1.选择符API,selectors API 可以使用CSS选择符匹配查找节点 1)  querySelector(selector),接受一个CSS选择符,返回调用该函数的节点后代中第一个匹配的元素 ...

  6. java得到当前日期的前一天或后一天

    public String getNextDay(String startdate) throws ParseException{ Date date = (new SimpleDateFormat( ...

  7. PHP+ajax实现二级联动

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Linux查看某个进程的线程

    线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念.当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间.打开的文件),以使叉分开销最小化 ...

  9. Linux移植之tag参数列表解析过程分析

    在Linux移植之内核启动过程start_kernel函数简析中已经指出了start_kernel函数的调用层次,这篇主要是对具体的tag参数列表进行解析. 1.内存参数ATAG_MEM参数解析 2. ...

  10. python基础之Day7part1集合

    一.集合 1.定义 s=set() 2.特点 每个元素必须是不可变类型,但集合本身是可变类型的,有add和remove等功能 3.用途 去重(原理:for循环if判断元素是否已存在,不存在则追加) 关 ...