【JavaEE】SpringBoot配置文件的设置及其读取

news2024/11/25 1:05:24

目录

配置文件作用

配置文件注意事项

properties

用法

修改字符集

优缺点

yml

用法

优缺点

读取配置文件

使用 @Value注解

读properties配置文件

 读yml配置文件

使用 @ConfigurationProperties 注解

读properties配置文件

读yml配置文件


配置文件作用

SpringBoot的配置文件主要有以下几个作用:

  1. 数据源和持久化:连接数据库、连接池等各种数据源和持久化相关的配置
  2. 日志记录和调试:设置日志记录级别、格式和输出位置等,还有启用远程调试功能等
  3. 缓存管理:设置缓存文件的类型、过期时间等
  4. Web服务配置:设置Web服务器的端口号、静态资源目录和错误页面等
  5. 安全认证:配置身份验证、授权和HTTP等相关安全配置
  6. 消息服务和异步操作:配置异步消息队列、任务调度等各种消息服务和异步处理功能

配置文件注意事项

  1. 必须要有一个主配置文件,名字只能是application.yml(properties)
  2. 每个平台都必要要有一个配置文件
    命名格式只能是 application-XXX.yml(.properties)
                                       只有XXX部分是自定义的
  3. 若各个配置文件中有完全相同的部分,则统一都写到主配置文件中去
  4. 在Java中,配置文件有两种类型:properties和yml,二者理论上可以出现在同一个项目中,但实际开发中只能统一选一个。
  5. properties的优先级较高,原因是properties和yml本质上没有任何区别,都是键值对,系统率先加载yml的,然后加载properties的,这样properties就会覆盖yml的

properties

Properties 是一种常见的配置文件类型,其以键值对(key-value)的形式保存配置信息。Properties 格式的文件通常使用 .properties 后缀名,该文件包含了若干行文本和 ASCII 编码的字符集,其中每一行都表示一个属性的键值对。在 Java 应用程序中,Properties 类也提供了一套 API 来解析和读取这类文件。

用法

这里就修改了服务器的端口号。

更多的用法可以到这里查看Common Application Properties (spring.io)


修改字符集

在properties中可以 用 # 来写注释

通常在IDEA中的properties的字符集是不适配中文的,这就需要我们修改一下。

 


优缺点

优点:

  1. 写法简单,不易出错,就是 key=value ,对于空格之类的也没有要求
  2. 优先级高

缺点:

  1. 冗余性较大
  2. 只能适用于Java项目,无法对其他语言项目适用

特点:是系统默认的配置文件


yml

yml是YAML的缩写,Yet Another Markup Language(另一种标记语言)

它被广泛应用于各种编程语言中,并且比 JSON 和 XML 更加人性化。

用法

优缺点

优点:

  1. 可读性高:语法简洁,易读
  2. 层级结构分明清晰
  3. 支持更多的数据类型
  4. 可以在各种编程语言的项目中使用

缺点:

  1. 学习成本较高,需要掌握其语法规则

读取配置文件

读取配置文件信息的方法有很多,下面将介绍一些常见的方法。


使用 @Value注解

这个注解可以读取单个配置项

读properties配置文件

package com.example.demo.component;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

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

    @PostConstruct
    public void getPropertiesString() {
        System.out.println("读取properties类型的配置文件信息" + propertiesString);
    }
}

 

 读yml配置文件

package com.example.demo.component;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class ReadYml {
    // 必须使用 ${} 才能从配置文件中读出来
    @Value("${server.port}")
    private String ymlString;

    @PostConstruct
    public void getYmlString() {
        System.out.println("读取yml类型的配置文件信息" + ymlString);
    }
}

 

 


使用 @ConfigurationProperties 注解

与@value不同的是,这个@configurationProperties可以读取多个配置项

读properties配置文件

首先要有一个与之对应的Bean对象,该对象的属性名要和配置文件的Key相同才可以

其中prefix的内容是从配置文件中的哪个路径去找,多级下的使用 .  来分开,yml也是同理

package com.example.demo.repository;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Repository;

@Repository
@ConfigurationProperties(prefix = "spring.datasource")
@Data
public class SpringDatasource {
    private String url;
    private String username;
    private String password;
}
package com.example.demo;

import com.example.demo.repository.SpringDatasource;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements InitializingBean {

	@Autowired
	private SpringDatasource springDatasource;

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}


	@Override
	public void afterPropertiesSet() throws Exception {
		System.out.println(springDatasource);
	}
}

读yml配置文件

读取的方法和properties相同。


指定文件来读取

以上两个读取配置文件的方法默认读取的是主配置文件中的内容。若是想要读取 环境特定的配置文件,就需要和 @PropertySource 一起使用了。

使用 @PropertySource 注解 来 指定查询配置文件

通过该注解可以指定读取的位置,然后读取出来配置项。

package com.example.demo;

import com.example.demo.repository.SpringDatasource;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;

@SpringBootApplication
@PropertySource("classpath:application-dev.yml")
public class DemoApplication implements InitializingBean {

//	@Autowired
//	private SpringDatasource springDatasource;

	@Value("${server.port}")
	private String port;

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}


	@Override
	public void afterPropertiesSet() throws Exception {
//		System.out.println(springDatasource);
		System.out.println(port);

	}
}

读取@ConfigurationProperties同上,只需要在加上该注解指定位置即可。


有什么问题评论区支持。希望可以帮到你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460243.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MCMC采样

MCMC采样 MCMC 是一种随机的近似推断,其核心就是基于采样的随机近似方法蒙特卡洛方法。而近似推断中又可以分成两大类,即为确定性近似 (VI) 和随机近似 (MCMC)。我们需要从概率分布中取 个点,从而近似计算这个积分。常用采样方法有&#xff…

开关柜绝缘状态检测与故障诊断

摘要:电力开关柜作为电力系统的关键设备广泛应用于输电配电网络,其运行可靠性直接影响着电力系统供电质量及安全性能。开关柜绝缘状态检测与故障诊断是及时维修、更换和预防绝缘故障的重要技术手段。在阐述开关柜绝缘状态评估的基础上,指出其内典型的局部…

Docker --- 基本操作、Dockerfile自定义镜像

一、Docker的基本操作 1.1、镜像操作 镜像名称 首先来看下镜像的名称组成: 镜名称一般分两部分组成:[repository]:[tag]。 在没有指定tag时,默认是latest,代表最新版本的镜像 如图: 这里的mysql就是repository&…

数据库课设--基于Python+MySQL的餐厅点餐系统(表的设计)

文章目录 一、系统需求分析二、系统设计1. 功能结构设计2、概念设计2.2.1 bill_food表E-R图2.2.2 bills表E-R图2.2.3 categories E-R图2.2.4 discounts表 E-R图2.2.5 emp表E-R图2.2.6 food 表E-R图2.2.7 member表E-R图2.2.8 member_point_bill表E-R图2.2.9 servers表E-R图2.2.1…

MySQL的事务原理和实现

一、事务属性与架构概述 1、基本概念: 事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。作为一个关系型数据库,MySQL…

为什么很多程序员不反感加班?行内人:老板给钱是真的给啊

为什么很多程序员不反感加班?行内人:说给钱老板真的给! 一提到程序员,大部分人第一反应是加班多、996、脱发,这几乎成了外界对程序员刻板印象的标配。不少知名的互联网大厂也是加班之风盛行,譬如著名的华为…

Java版企业电子招投标采购系统源码之登录页面

信息数智化招采系统 服务框架:Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构:VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术:Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、Stre…

Centos8编译安装内核

首先下载kernel,5.x版本的内核,下载地址: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ 系统安装相关包: # yum install -y bc gcc make python3 ncurses-devel flex bison openssl-devel elfutils-libelf-devel将内…

南大通用数据库-Gbase-8a-学习-34-gcdump(导出数据库对象定义)

目录 一、测试环境 二、介绍 三、命令帮助 四、参数介绍 1、--print-defaults (1)含义 (2)例子 2、--connect_timeout (1)含义 (2)例子 3、-A, --all-databases &#xf…

软考初级考什么比较好?信息处理技术员怎么样?

软考初级信息处理技术员难度不大,零基础也是可以直接报考的,熟悉电脑,多练习就差不多了。 本考试设置的科目包括: (1)信息处理基础知识,考试时间为150分钟,笔试,选择题…

92、Nerfbusters: Removing Ghostly Artifacts from Casually Captured NeRFs

简介 主页:https://ethanweber.me/nerfbusters/ 在远离训练视图的新视图上渲染nerf可能会导致伪影,例如浮动或糟糕的几何形状。这些工件在野外捕获(a)中很普遍,但在NeRF基准测试中很少看到,因为评估视图通常从与训练视图相同的相机路径中选…

HTB_Under Construction—jwt伪造与sqlite注入

根据提示,此题目应该是代码审计类型的,文件结构如下 一般思路有两个,一是看有没有什么敏感信息,二就是看参数传递的地方能否利用,包括注入,伪造等 分析代码 index.js 先来分析入口文件,这是标…

零基础C/C++开发到底要学什么?

作者:黑马程序员 链接:https://www.zhihu.com/question/597037176/answer/2999707086 先和我一起看看,C/C学完了可以做什么: 软件工程师:负责设计、开发、测试和维护各类型的软件应用程序;游戏开发&#x…

【机智云物联网低功耗转接板】+模拟MCU快速上手

GE211是机智云自研的定制化转接板,使用 ESP32-C3-WROOM-02 通讯模块,适用于白色智能家电等设备应用。 转接板已经烧录了机智云连云的最新GAgent固件,所以不需要烧写任何软件就可以快速上手使用。 GE211板卡带有一个串口,一般是把这…

YOLOv1代码复现2:数据加载器构建

YOLOv1代码复现2:数据加载器构建 前言 ​ 在经历了Faster-RCNN代码解读的摧残后,下决心要搞点简单的,于是便有了本系列的博客。如果你苦于没有博客详细告诉你如何自己去实现YOLOv1,那么可以看看本系列的博客,也许可以帮…

同步辐射X射线断层扫描成像在各行业的应用

同步辐射X射线断层扫描成像在各行业的应用 同步辐射X射线断层扫描成像(synchrotron radiation X-ray computed tomography,SRCT)是一种非侵入式、高分辨率的成像技术,利用同步辐射光束产生的高强度、高亮度、单色性和相干性的X射线…

【C#】DockContent的使用

下载主题包和控件包 nuget Install-Package DockPanelSuite -Version 3.0.6 Install-Package DockPanelSuite.ThemeVS2015 -Version 3.0.6 在要靠的子界面继承DockContent 子界面上添加DockPanel控件,并将dock设置为fill。 主界面创建一个dockPanel1&#xff1b…

LDR6020全球第一颗PD MCU 无敌 Type-C手机背夹散热器方案

最近发现了个新玩意儿,因为经常玩游戏,手机发热的厉害,都可以煎鸡蛋了,心想着要买个东西给手机散散热,没想到还真的有手机散热器。 不知道手机散热器的也正常,毕竟一般人正常玩玩手机,发热就发…

局域网 - 高速以太网(百兆、千兆、万兆)

文章目录 1 概述1.1 802.3 物理层规范1.2 以太网标准中后缀 -T、-F、-X 含义 2 分类2.1 快速以太网(802.3μ、百兆)2.2 千兆以太网(802.3z、802.3ab)2.3 万兆以太网(802.3ae) 3 扩展3.1 网工软考真题 1 概述…

English Learning - L2-15 英音地道语音语调 语音语调四步法 2023.04.17 周一

English Learning - L2-15 英音地道语音语调 语音语调 2023.04.17 周一 语调概念和汉语拼音对比 语音语调四步法语调练习意群划分重音重中之重语调的选择 语调的含义 语调概念 广义:语音技巧,连读,失去爆破,音同化,还…