SpringBoot配置文件的注入和读取

这篇具有很好参考价值的文章主要介绍了SpringBoot配置文件的注入和读取。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 配置文件的作用

2. 两种配置文件的格式:

2.1 properties 基本语法:

2.1.1 写入

2.1.2 读取

执行原理

2.1.3 缺点分析

2.2 yml 基本语法:

2.2.1 写入(非对象)

2.2.3 配置对象

2.2.4 配置集合

多个配置文件


SpringBoot配置文件的注入和读取


1. 配置文件的作用

        SpringBoot 是为了简化 Spring 的操作,提高 Spring 项目的开发效率,它将 Spring 的一系列组件及配置进行封装和自动调用,但一些重要配置还是需要我们手动配置的,例如数据库接口、账户密码、项目端口、异常日志等由开发环境所决定的信息。

2. 两种配置文件的格式:

        SpringBoot 配置文件有两种格式:.properties 和 .yml,二者的区别可以简单理解为:

        首先:二者的功能都是一样的,.properties 文件是最早期的文件格式, 也是SpringBoot 的默认文件,项目诞生之初就自带的,而 .yml 是后来为了提高效率而衍生出的另一种格式,它相对于前者更写法更简洁,功能更强大,但唯一的不足在于新手容易写错,工作中最常用的是 .yml格式。

        其次:这两种文件在一个项目中理论上可以同时存在,但一般开发不会这样使用,尽量统一使用一种,因为这两种文件都存在的情况下,框架会优先加载 properties 文件,另一方面统一有助于代码的读写。

        不管使用哪种配置文件,文件建立之初它们都是空白的,具体要配置哪些功能随着我们开发自行配置即可,配置同时又分为了 “写入配置文件” 和 “读取配置文件” 两步。        

2.1 properties 基本语法:

2.1.1 写入:

         properties 文件是键值对形式,key 和 value 之间用 “=” 连接:

#配置项目端口
server.port=8080

#配置数据库连接
spring.datasource.url=jdbc:mysql://127.0.0.1/3306/blog?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=111111

2.1.2 读取:

        properties 文件的读取使用 @Value("${}") :        

@Controller
public class ReadProperties {
    @Value("${server.port}")
    private String port;

    @PostConstruct
    public void postConstruct() {
        System.out.println("port -> " + port);
    }
}

执行效果:

SpringBoot配置文件的注入和读取

执行原理:

        @Controller 将当前 Bean 存到容器中,在执行 @PostConstruct 方法时就可以读到配置信息;

2.1.3 缺点分析:

SpringBoot配置文件的注入和读取

         像这样,properties 文件可能有时需要写多次冗余的内容,因此 yml 文件就解决了这点。

2.2 yml 基本语法:

        yml文件需要先手动创建:

SpringBoot配置文件的注入和读取

2.2.1 写入(非对象):

        yml 是树形配置文件,语法格式为:key: value观察颜色,冒号和 value 之间是有空格的,这就是容易写错的地方。如果在书写时格式正确,key: 也会自动高亮。

#配置项目端口
server:
  port: 8080

#配置数据库连接
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/blog?characterEncoding=utf8
    username: root
    password: 111111

各种类型的写法:其实 yml不仅是一种文件,还是一种配置语言,因此其支持更广泛的数据类型。

#整数
int.value1: 1
int.value2: 2
int.value3: 3

#浮点数
float.value1: 3.1415
float.value2: 1.69

#字符串
string.value: hello world

#布尔值
boolean.value1: true
boolean.value2: false

# null值,yml 的 null 代表什么都是也代表什么都不是
null.value: ~

注意点:字符串加单/双引号前后含义不同:

#特殊的字符串
string:
    none: hello /n world
    single: 'hello \n world'
    doub: "hello \n world"
@Controller
public class ReadYmlStr {
    @Value("${string.none}")
    private String none;

    @Value("${string.single}")
    private String single;

    @Value("${string.doub}")
    private String doub;

    @PostConstruct
    public void postConstruct() {
        System.out.println("不加引号:" + none);
        System.out.println("加单引号:" + single);
        System.out.println("加双引号:" + doub);
    }
}

SpringBoot配置文件的注入和读取

  • 字符串默认不加引号;
  • 加单引号,会转义特殊字符为普通字符;
  • 加双引号,不会转义特殊字符;

2.2.2 读取:

        yml 的读取和 properties 一样,也是通过 @Value("${}") 实现:

@Controller
public class ReadYml {
    @Value("${int.value1}")
    private int num;

    @Value("${string.value}")
    private String str;

    @Value("${boolean.value1}")
    private boolean ans;

    @PostConstruct
    public void postConstruct() {
        System.out.println("从Yml里拿到的num为:" + num);
        System.out.println("从Yml里拿到的str为:" + str);
        System.out.println("从Yml里拿到的ans为:" + ans);
    }
}

SpringBoot配置文件的注入和读取

2.2.3 配置对象:

写入对象:

        写入对象的语法有两种:①普通的,按照yml格式写;②行内样式写法;

①yml 格式:

student:
  id: 020304
  name: 张三
  age: 18

②行内样式:

teacher: {id: 1, name: 张红, age: 25}

接着需要在对象依赖的类里加入注解:@ConfigurationProperties("")

另外一定不能缺少对象的 Getter() 和 Setter() 方法,这里只能借助 lombok注解简化了代码

// 关键注解是第一句,中间三个注解是 lombok 的注解,
// Getter 和 Setter 相关方法不能少
@ConfigurationProperties("student")
@Getter
@Setter
@ToString
@Component
public class Student {
    private int id;
    private String name;
    private int age;
}

读取对象:读取没有特殊的,还是要通过 @Autowired 属性注入的方式:

@Component
public class ReadObjects {
    @Autowired
    private Student student;

    @PostConstruct
    public void postConstruct() {
        System.out.println(student);
    }
}

SpringBoot配置文件的注入和读取

2.2.4 配置集合:

写入:

写入也有两种格式:

①普通yml格式:

dogtypes:
  dogsName:
    - 泰迪
    - 比熊
    - 博美
    - 爱斯基摩
    - 哈士奇
    - 边牧
    - 萨摩耶
@ConfigurationProperties("dogtypes")
@Getter
@Setter
@ToString
@Component
public class ListConfig {
    private List<String> dogsName;
}

②行内样式:

cattypes: {catsName: [中华田园猫,英短,加菲,布偶,金吉拉]}
@ConfigurationProperties("cattypes")
@Getter
@Setter
@ToString
@Component
public class ListConfig2 {
    private List<String> catsName;
}

读取:

@Component
public class ReadList {
    @Autowired
    private ListConfig listConfig;

    @PostConstruct
    public void postConstruct() {
        System.out.println(listConfig.getDogsName());
    }
}

SpringBoot配置文件的注入和读取


多个配置文件:

        开发分了很多环境:开发环境、测试环境等,还可以分得更细,对于不同环境可以配置不同的配置文件,但前提是要有一个总配置文件;

        一般总配置文件命名为:application.yml;其他配置文件根据环境命名;

        主配置文件可以调用子配置文件:

SpringBoot配置文件的注入和读取

 

关于更多 SpringBoot 读取配置文件等操作:面试突击75:SpringBoot 有几种读取配置文件的方法? - 掘金文章来源地址https://www.toymoban.com/news/detail-465544.html


到了这里,关于SpringBoot配置文件的注入和读取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot读取配置文件

    springboot项目中不同配置文件的优先加载顺序 为:properties yml yaml自定义核心类配置 自定义配置文件的加载 一般系统会加载默认的application.properties或者application.yml,但如果使用自定义配置文件,可使用下面方式进行加载: @PropertySource(\\\"classpath:myApplication.properties\\\")加载自定义配置

    2024年01月17日
    浏览(32)
  • springboot读取多文件配置(包括nacos)

    首先来简单了解一下这个类。 ResourceBundle类主要是用来 解决国际化和本地化问题 ,就我的理解,就是类似于前端界面的字体显示,国际化操作一般都要支持多国语言,那么这个ResourceBundle类就能够简单快速的解决这个问题。 同时,这个类只能支持读取properties属性文件,和

    2023年04月09日
    浏览(46)
  • SpringBoot读取配置文件中的内容

    配置文件application.yml: Environment 是 springboot 核心的环境配置接口,它提供了简单的方法来访问应用程序属性,包括系统属性、操作系统环境变量、命令行参数、和应用程序配置文件中定义的属性等等。 Springboot 程序启动加载流程里,会执行SpringApplication.run中的prepareEnvironmen

    2024年01月21日
    浏览(61)
  • springboot的配置文件如何配置可以实现多个yml相互读取

    在Spring Boot中,可以通过多种方式来实现配置文件的相互读取和组合。如果你想要在一个Spring Boot应用中使用多个YAML( .yml )配置文件,并且希望这些配置文件可以相互读取或者互相覆盖某些配置,你可以采用以下几种方法: 1. 使用 spring.config.import 属性(Spring Boot 2.4及以上版

    2024年02月20日
    浏览(49)
  • SpringBoot中的yml文件中读取自定义配置信息

    开发中遇到的问题,百度的答案我都没有找到,去找大佬获取到的经验总结,这只是其中的一种方法,如果其他大佬有新的方法,可以分享分享。 1.1 yml文件 自定义配置信息,通过我们编写的代码读取。 1.2 类 非静态属性中@Value生效 ps: 不是在控制层中拥有@Controller注解,说明

    2024年02月07日
    浏览(54)
  • 【Spring教程十】Spring框架实战:全面深入详解IOC/DI之--纯注解开发模式下的依赖注入&&注解读取properties配置文件

    欢迎大家回到《 Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《 如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《 全面深入详解IOC/DI注解开发》 Spring为了使用注解简化开发,并没有提供

    2024年02月04日
    浏览(54)
  • 【Java】读取 springboot 配置文件内容的几种方法

    Spring Boot 是一个非常流行的 Java Web 开发框架,它提供了大量的便捷功能和特性,其中读取配置文件是其中的一项重要功能。Spring Boot 支持多种方式读取配置文件,本文将介绍 Spring Boot 读取配置文件的原理和常用方法。 Spring Boot 读取配置文件的原理是通过 Spring Boot 的自动配置

    2024年02月15日
    浏览(69)
  • SpringCloud-SpringBoot读取Nacos上的配置文件

    在 Spring Boot 应用程序中,可以使用 Spring Cloud Nacos 来实现从 Nacos 服务注册中心和配置中心读取配置信息。以下是如何在 Spring Boot 中读取 Nacos 上的配置文件的步骤: 1. 引入依赖 首先,在 Spring Boot 项目的 pom.xml 文件中添加 Spring Cloud Nacos 的依赖: 2. 配置 Nacos 连接信息 将 Nac

    2024年04月17日
    浏览(53)
  • 【SpringBoot】两种配置文件, 详解 properties 和 yml 的语法格式, 使用方式, 读取配置

    各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, 链表, 堆, 二叉树, 二叉搜索树, 哈希表等 📘 JavaEE初阶: 多线程, 网络编程, TCP/IP协议, HTTP协议

    2024年02月10日
    浏览(53)
  • JAVA-9-[SpringBoot]非web应用程序创建和配置文件读取

    SpringBoot 常用读取配置文件的 3 种方法! Spring Boot非web应用程序的创建方式 有时有些项目不需要提供web服务,比如跑定时任务的项目,如果都是按照web项目启动,这个时候会浪费一些资源。 1、Spring CommandLinerunner接口实现booot入口类; 2、run()方法覆盖commandlineruner接口,在run方

    2023年04月08日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包