【SpringBoot】第3章 SpringBoot的系统配置

3.1 系统配置文件

3.1.1 application.properties

SpringBoot支持两种不同格式的配置文件,一种是Properties,一种是YML。

SpringBoot默认使用application.properties作为系统配置文件,项目创建成功后会默认在resources目录下生成application.properties文件。该文件包含SpringBoot项目的全局配置。

我们可以在application.properties文件中配置SpringBoot支持的所有配置项,比如端口号、数据库连接、日志、启动图案等。

#服务器端口配置

server.port = 8081

#thymeleaf 模板

spring.thymeleaf.prefix=classpath:/templates/

spring.thymeleaf.suffix=.html

spring.thymeleaf.mode=HTML

spring.thymeleaf.encoding=UTF-8

spring.thymeleaf.servlet.content-type=text/html

以上示例将thymeleaf模板相关的配置放在一起,清晰明了,从而便于快速找到thymeleaf的所有配置。

3.修改默认配置文件名

new SpringApplicationBuilder(ApplicationDemo.class).properties("spring.config.location=classpath:/application.propertie").run(args);

3.2 自定义配置项

3.2.2 Environment

@Autowired

private Environment env;

@Test

void getEnv(){

      System.out.println(env.getProperty("com.weiz.costum.firstname"));

System.out.println(env.getProperty("com.weiz.costum.secondname"));

}

3.2.3 @ConfigurationProperties

在实际项目开发中,需要注入的配置项非常多时,前面所讲的@value和Environment两种方法就会比较繁琐。这时可以使用注解@ConfigurationProperties将配置项与实体Bean关联起来,实现配置项与实体类字段的关联,读取配置文件数据。下面通过示例演示@ConfigurationProperties注解如何读取配置文件。

1.创建自定义配置文件

在resources下创建自定义的website.properties配置文件,示例代码如下:

com.weiz.resource.name=weiz

com.weiz.resource.website=www.weiz.com

com.weiz.resource.language.=java

在上面的示例中,创建了自定义的website.properties配置文件,增加了name、website、language等三个配置项,这些配置项的名称的前缀都是com.weiz.resource。

2.创建实体类

创建WebSiteProperties自定义配置对象类,然后使用@ConfigurationProperties注解将配置文件中的配置项注入到自定义配置对象类中,示例代码如下:

@Configuration

@ConfigurationProperties(prefix = "com.weiz.resource")

@PropertySource(value = "classpath:website.properties")

public class WebSiteProperties{

       private String name;

       private String website;

       private String language;

       public String getName(){

                  return name;

}

         public void setName(String name){

        this.name=name;

}        

        public String getWebsite(){

        return website;

}

        public void setWebsite(String website){

       this.website=website;

}

       public String getLanguage(){

      return language;

}

      public void setLanguage(String language){

     this.language=language;

}

}

从上面的示例代码可以看到,我们使用了@Configuration注解、@ConfigurationProperties和@PropertySource三个注解来定义WebSiteProperties实体类:

1)@Configuration定义此类为配置类,用于构建bean定义并初始化到Spring容器。

2)@ConfigurationProperties(prefix="com.weiz.resource")绑定配置项,其中prefix表示所绑定的配置项的前缀。

3)@ProperSource(value="classpath:website.properties")指定读取的配置文件及其路径。

@PropertySource不支持引入YML文件。

通过上面的WebSiteProperties类即可读取全部对应的配置项。

3.调用配置项

使用配置实体类中的方式也非常简单,只需将WebSiteProperties注入到需要使用的类中,示例代码如下:

@Autowired

private WebSiteProperties website;

@Test

void getProperties(){

     System.out.println(website.getName());

    System.out.println(website.getWebsite());

    System.out.println(website.getLanguage());

}

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

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

相关文章

父子组件的传参问题,一方改变,另一方随之改变

目录 1.问题 2.解决方案 3.前端中的深拷贝及浅拷贝问题总结 1.问题 在子组件中通过emit调用父组件的方法,并传递参数,当子组件中修改传递给父组件的参数时,即使没有将修改后的值传递给父组件,父组件中的值依然修改了。 原因是…

Unity XR Interaction Toolkit设置或监听手柄按键事件(三)

提示:文章有错误的地方,还望诸位大神不吝指教! 文章目录 前言一、XRI Default Input Actions1.导入官方案例2.设置控制器绑定,如手柄、主/辅助按钮、操纵杆等1.要设置控制器绑定,如左右手 手柄、主/辅助按钮、操纵杆等…

转换,模糊查询属性,校验html写法

element ui 模糊查询 filterable 表单规则 :rulesrules el-form-item中的prop绑定的属性写规则rules blur 失去焦点事件 forcus 获取焦点事件 映射转换 function mappingFn(code){ let arr mappingList.value.map((item,index)>{ if(item.codecode){ r…

[k8s源码]8.deltaFIFO

deltaFIFO DeltaFIFO: 这是一个特殊类型的队列,它结合了FIFO(先进先出)队列的特性和增量(Delta)处理的能力。DeltaFIFO 中是按顺序存储的,但它们不必严格按照发生的顺序逐个处理。这种设计提供了处理的灵…

nosql--redis

nosql--不仅仅是sql,是所有非关系型数据库的统称 常用的NOSQL产品 redis [企业使用频率很高] mongodb hbase [适合大数据] redis redis可以用作数据库,缓存和消息代理,而且里面可以存储多种数据类型,提供了高可用机制 安装redi…

【C++中线程学习】

1、多线程 C11之前没有引入线程的概念&#xff0c;如果想要实现多线程&#xff0c;需要借助操作系统平台提供的API&#xff0c;比如Linux的<pthead.h>&#xff0c;或者windows下的<windows.h>。 C11提供了语言层面上的多线程&#xff0c;包含在头文件<thread.h…

Python中的异常处理与调试技巧

在Python编程中&#xff0c;异常处理&#xff08;Exception Handling&#xff09;和调试&#xff08;Debugging&#xff09;是两个至关重要的技能&#xff0c;它们帮助开发者识别并修复代码中的问题&#xff0c;确保程序的稳定性和可靠性。本文将详细介绍Python中的异常处理机制…

浅谈机器学习与深度学习的区别?

深度学习与机器学习是人工智能&#xff08;AI&#xff09;领域的两个重要分支&#xff0c;它们在数据处理、硬件依赖以及应用范围等方面有显著的区别。具体分析如下&#xff1a; 1. 数据处理 机器学习&#xff1a;机器学习通常需要较少的数据来训练模型&#xff0c;因为它使用…

在Windows下部署jar包,关闭命令提示符可以后台运行

前言 大多数情况下&#xff0c;都是选用Linux作为服务器部署服务&#xff0c;在Linux中通过以下命令运行 nohup java -jar xxxxx-1.0-SNAPSHOT.jar 但是有时由于其他原因&#xff0c;或本地测试&#xff0c;或云服务器使用Windows server等等&#xff0c;需要在Windows上面运…

matlab仿真 数字基带传输(下)

&#xff08;内容源自详解MATLAB&#xff0f;SIMULINK 通信系统建模与仿真 刘学勇编著第六章内容&#xff0c;有兴趣的读者请阅读原书&#xff09; clear all Fd1;%符号采样频率 Fs10;%滤波器采样频率 r0.2;%滤波器滚降系数 delay4;%滤波器时延 [num,den]rcosine(Fd,Fs,defau…

Python读取grib数据获取变量推荐姿势

前情提要 最近使用的EC和GFS预报数据给的都是grib2格式的&#xff0c;之前用惯nc格式的&#xff0c;python读取grib2数据的时候还走了些弯路&#xff0c;看到很多博客上给的教程其实不能满足我的需求&#xff0c;现在搞明白了分享一下 pygrib安装 第一个问题就是我电脑上pyg…

通信原理实验六:实验测验

实验六 实验测验 一&#xff1a;测验内容和要求 测试需要完成以下几个步骤&#xff1a; 配置好以下网络图&#xff1b;占总分10%&#xff08;缺少一个扣一分&#xff09;根据下面图配置好对应的IP和网关以及路由等相关配置&#xff0c;保证设备之间连通正常&#xff1b;占总…

领略诗词之妙,发觉生活之美。

文章目录 引言落霞与孤鹜齐飞,秋水共长天一色。野渡无人舟自横。吹灭读书灯,一身都是月。我醉欲眠卿且去,明朝有意抱琴来。赌书消得泼茶香,当时只道是寻常。月上柳梢头,人约黄昏后。最是人间留不住,朱颜辞镜花辞树。山中何事?松花酿酒,春水煎茶。似此星辰非昨夜,为谁风…

用Swagger进行后端接口测试的实战操作

目录 一.什么是Swagger&#xff1f; 二.Swagger的使用操作流程&#xff1a; 1.在pom.xml配置文件导入 Knife4j 的依赖&#xff1a; 2.在config配置类中加入 Knife4j 的相关配置并设置静态资源映射&#xff08;否则接口文档无法访问&#xff09;&#xff1a; 三.Swagger的四个…

redis构建集群时,一直Waiting for the cluster to join

redis构建集群时&#xff0c;一直Waiting for the cluster to join 前置条件参考 前置条件 这是我搭建的集群相关信息&#xff0c;三台虚拟机&#xff0c;分别是一主一从。在将所有虚拟机中redis服务器用到的tcp端口都打开之后&#xff0c;进行构建集群。但是出现上面的情况。 …

node.js包管理工具对比

1. NPM&#xff08;Node Package Manager&#xff09; 特点&#xff1a; 官方工具&#xff1a;由 Node.js 官方提供的默认包管理工具。命令行工具&#xff1a;常用命令包括 npm install、npm update、npm publish 等。NPM 注册表&#xff1a;提供了一个庞大的开源包生态系统&…

【llama3.1】ollama的使用--本地部署使用llama3.1模型

快速入门 安装完成ollama后,在命令行窗口输入 ollama run llama3 上图表示 Ollama 正在下载 llama3 任务所需的资源文件,并显示了当前的下载进度、速度和预计剩余时间。这是 Ollama 在准备运行 llama3 任务之前所需的步骤。 上面的步骤完成后,就可以在本地进行聊天了,…

Chart.js 环形图

Chart.js 环形图 介绍 Chart.js 是一个强大的 JavaScript 图表库&#xff0c;它允许开发者轻松地在网页上创建和自定义各种图表。环形图&#xff08;也称为饼图或甜甜圈图&#xff09;是 Chart.js 支持的一种图表类型&#xff0c;用于展示数据在整体中的占比关系。环形图通过…

基于 HTML+ECharts 实现的数据可视化大屏案例(含源码)

数据可视化大屏案例&#xff1a;基于 HTML 和 ECharts 的实现 数据可视化已成为企业决策和业务分析的重要工具。通过直观、动态的图表展示&#xff0c;数据可视化大屏能够帮助用户快速理解复杂的数据关系&#xff0c;发现潜在的业务趋势。本文将介绍如何利用 HTML 和 ECharts 实…

区块链和数据要素融合的价值及应用

一、数据要素面临的关键障碍 在构建数据要素基石的过程中&#xff0c;首要任务是明确并解决产权架构的难题&#xff0c;特别是使用权的确立与流转机制的顺畅&#xff0c;此乃数字经济蓬勃发展的命脉所在。一个高效的数据流转体系对于激发数据潜能、加速经济发展及优化数据资源…