锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. SpringBoot配置文件

SpringBoot配置文件

0
  • 软件开发
  • 发布于 2024-09-19
  • 0 次阅读
黄健
黄健

1.配置文件的作用

配置文件在整个项目中是非常重要的,比如

数据库的连接信息(用户名密码),servlet是将配置信息写到代码中的,项目启动时还是需要读取配置信息

项目的启动端口,当项目的端口被占用时,可以通过配置文件直接修改端口信息,linux可以使用命令查看被占用的端口的进程,windows比较复杂,有时难以找到,通过配置文件修改项目端口号比较方便

第三方系统调用密钥等信息,第三方系统颁发的密钥存储在配置文件中,密钥直接写在程序中打包后变为class文件不能被修改,并且不安全,代码被下载后,密钥就被获得了.配置文件可以放在云端,进行分离,提升了安全性.有了配置文件也方便维护人员的修改.

用于发现和定位问题的普通日志和异常日志等

2.配置文件的格式

SpringBoot配置文件有两种格式

1.properties(默认)

2.yml(yaml)

这两种配置文件从功能上来说可以存在于同一个项目中,如果配置了相同的属性,那么以properties的生效,properties的优先级是高于yml的,但是properties配置信息加载完后也会加载yml的配置信息

虽然能并存,但是实际开发中通常会采用一种统一的方式,利于维护

3.配置文件说明

properties配置文件说明

基本语法:k=v形式配置

多个配置文件,换行写

分为

1.系统配置项(给Spring使用的),如端口号,server.port=8080/spring.datasource.url…

2.用户自定义配置项(非系统配置项):用户自定义的key

properties中:

这里的中文重新打开后会乱码…或者没乱码但是重启后乱码了(重启前IDEA有缓存,可能不会乱码)

如果写了很多注释,重启后全部乱码,就会很难受

注释乱码原因:

编码格式: 项目启动后就不能修改了

解决方法:点击settings,将选项全都修改为UTF8后应用,新项目就会默认支持中文.

本项目还是不支持,本项目编码格式已经不能修改

将原来的properties文件删除,重新创建一个properties文件 ,就能支持中文

yml能进行编码格式的修改,并且默认是UTF8,支持中文

设置项目端口号

控制台打印端口号

注释掉当前配置信息,使用yml配置,yml配置信息就会生效

t上面也说过,有相同项,以properties的配置信息为准, 它的优先级是高于yml的

删除注释,启动项目,就会发现端口号还是9090

注意:每次修改配置项后,都要重启项目,不启动是不会生效的

读取配置文件

在项目中要主动读取配置文件的内容,使用@Value注解实现

@Value注解使用${}格式读取

结果并不是hellozhangsan

是因为读取配置文件内容有固定的格式,这样写相当于将studentname这个字符串赋值给了name ,没有读取配置项

所以要遵守约定,才能读取到配置文件的内容

读取成功

用了这个格式,如果没有这个配置项,启动时就会报错

因为这个本质还是DI,当项目启动时,容器会进行加载,加载时进行属性的设置,会检测有没有key值是student,没有发现key值,就会报错了

读取配置文件注意:格式 ${key}

也能读取系统配置信息

properties优点

1.是系统默认的配置文件

2.优先级比yml高

3.格式简单

缺点:写法比较冗余(包名必须全都写上,很多相同包名下的配置都要写上包名)

4.yml配置文件说明

yml优点

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

可读性高,写法简单,易于理解,语法和JSON相似

支持更多的数据类型,可以简单地表达数组,散列表,标量等数据形态.使用空白符进行缩进和大量依赖外观的特色,适合用来表达或编辑数据结构,各种配置文件等

支持更多的编程语言,不仅是在Java中使用

基本语法:

key: value

kv是冒号加空格构成的,空格不能省略

yml读取配置的⽅式和properties相同,使⽤@Value注解即可

没有空格,port就没有高亮,容器加载时是不会被识别的

还有缩进问题

启动后会直接报错,因为server下找不到aaaa

aaaa前有两个tab,不是server下的配置信息

去掉一个tab后

注意:yml写法简洁,但是非常灵活,容易出错,不适合新手

再看个配置字符串的例子

字符串类型的,获取之后结果如何?

结果:

什么都不加的,和加了单引号的,是什么内容就输出什么内容

加了双引号的,是原意输出,\n本来表示换行

还可表示其他数据类型

配置对象

读取对象时不能用@Value注解,要使用@Configuration注解实现

还能配置一个对象,yml读取对象的实现:

这种写法也可以:

student: {id: 1,name: 张三,age: 18}

启动项目:

配置集合

配置文件中也能配置集合

或者

collection: {name: [mysql,sqlserver,db2]}

也是使⽤@ConfigurationProperties来读取的

启动项目

5.设置不同环境的配置文件

Spring Boot不同平台的配置规则:
1.必须有主配置文件,主配置文件名必须是application.yml(.properties)

主配置文件存放公共的内容,不同平台的配置文件存放有差异的内容

2.不同平台的配置文件,每个平台拥有一个配置文件,配置文件名称:application-xxx.yml(.properties)

```
#开发环境配置文件
server:
  port: 9090
```
#生产环境配置文件
server:
  port: 9393
```
#测试环境配置文件
server:
  port: 9898

在主配置文件中设置运行环境

spring.profiles.active=dev

dev是可变的,可以设置为其他的,test/prod

然后启动项目,观察端口号,9090就是开发环境的端口号






原文链接: https://blog.csdn.net/chenchenchencl/article/details/130475160

标签: #Spring Boot 173 #软件开发 1171
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.