SpringBoot配置文总结

news2024/11/15 23:25:01

官网配置手册

官网:https://spring.io/
选择SpringBoot
在这里插入图片描述

选择LEARN
在这里插入图片描述

选择 Application Properties
在这里插入图片描述

配置MySQL数据库连接

针对Maven而言,会搜索出两个MySQL的连接驱动。
在这里插入图片描述
com.mysql » mysql-connector-j
比较新,是在mysql » mysql-connector-java基础上进行二次开发和维护
在这里插入图片描述
mysql » mysql-connector-java也说明了转移到了com.mysql » mysql-connector-j,推荐使用com.mysql » mysql-connector-j【如果是老项目,则应该选择mysql » mysql-connector-java】
在这里插入图片描述

spring:
  datasource:
    #    MySQL8.x要加上cj
    driver-class-name: com.mysql.cj.jdbc.Driver
    name: root
    password: flzxsqc
    url: jdbc:mysql://127.0.0.1:3306/my_db?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=GMT%2B8

SpringBoot这里配置的是UTF-8,但是会被默认的数据库连接池HikariCP解析时映射到MySQL的utf8mb4字符集上。
HikariCP使用mysql-connector-j作为数据库连接驱动,而mysql-connector-j对于字符集utf-8的解释会映射为utf8mb4格式,进而更好的支持Unicode特殊字符比如 Emoji 表情等

读取配置文件信息

properties格式

properties配置文件

  1. 同样的代码需要多次写,会不方便

格式:key.value

# 应用服务 WEB 访问端口
server.port=8080
# MySQL数据库连接
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/my_db&?useUnicode=true&characterEncoding=UTF-8&userSSL=true&serverTimezone=GMT%2B8
spring.datasource.name=root
spring.datasource.password=flzxsqc
# MySQL8.x加cj
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 用户自定义配置
config.customer.str1=hello

yaml格式

yaml格式配置文件

  1. 类似于JSON格式,可读性高,写法简单易理解
  2. 支持的数据类型众多【数组、散列表】
  3. 支持的编程语言更多【PHP、Python、JavaScript】

格式:key: value
注意: key 和 value 之间使用英文冒号加空格形式组成,其中空格不能省略

# 应用服务 WEB 访问端口
server:
  port: 8080

# MySQL数据库连接

# 用户自定义配置
spring:
  datasource:
    #    MySQL8.x要加上cj
    driver-class-name: com.mysql.cj.jdbc.Driver
    name: root
    password: flzxsqc
    url: jdbc:mysql://127.0.0.1:3306/my_db?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=GMT%2B8

# 用户自定义配置
config:
  customer:
    # 字符串【只有双引号才会被解析】
    str1: hello world
    str2: hello \n world
    str3: 'hello \n world'
    str4: "hello \n world"
    # 整数
    num1: 3
    # 浮点数
    float1: 3.1415926
    # Null【~代表null】
    null1: ~

# 对象
student:
  id: 1
  name: "张三"
  age: 23

student2: { id: 2, name: "李四", age: 24 }

# 集合
mylist:
  dbtypes:
    - mysql
    - oracle
    - sqlserver

mylist2: { dbtypes: [ mysql2, oracle2, sqlserver2 ] }

yml配置文件中如果使用双引号修饰了字符,那么其中的特殊字符就会生成对应的效果比如 \n 换行符

读取基础数据

把properties文件注释掉,只读取yaml文件数据

采用@Value注解读取配置文件中基础数据类型
前端页面效果【被转为了JSON字符串】
Java代码如下

package app.controller;

import app.model.MyList;
import app.model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.beans.factory.annotation.Value;

import java.util.ArrayList;
import java.util.List;

@RestController
public class TestController {
    // 读取用户自定义配置信息
    @Value("${config.customer.str1}")
    private String config_customer_str1;
    @Value("${config.customer.str2}")
    private String config_customer_str2;
    @Value("${config.customer.str3}")
    private String config_customer_str3;
    @Value("${config.customer.str4}")
    private String config_customer_str4;
    @Value("${config.customer.num1}")
    private Integer config_customer_num1;
    @Value("${config.customer.float1}")
    private float config_customer_float1;
    @Value("${config.customer.null1}")
    private Object config_customer_null1;
    // 读取系统的配置项
    @Value("${server.port}")
    private String server_port;

    @GetMapping("/config")
    public List<Object> readConfig() {
        List<Object> config = new ArrayList<>();
        config.add(config_customer_str1);
        config.add(config_customer_str2);
        config.add(config_customer_str3);
        config.add(config_customer_str4);
        config.add(config_customer_num1);
        config.add(config_customer_float1);
        config.add(config_customer_null1);
        config.add(server_port);
        System.out.println(config);
        return config;
    }
}

在这里插入图片描述
控制台输出效果
在这里插入图片描述

读取对象

@ConfigurationProperties 对于配置文件中的赋值依赖 getter 和 setter 方法,缺少之后就会无法启动项目

# 对象
student:
  id: 1
  name: "张三"
  age: 23
# 类似于js的行内写法也可以读取到
student2: {id: 2, name: "李四", age: 24}

Java代码如下
构造对象

package app.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "student") // 将配置文件中 student 配置赋值给当前对象
public class Student {
    private Integer id;
    private String name;
    private Integer age;
}

读取对象

package app.controller;

import app.model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.ArrayList;
import java.util.List;

@RestController
public class TestController {
    // 读取对象
    private final Student student;

    @Autowired
    public TestController(Student student) {
        this.student = student;
    }

    @GetMapping("/config")
    public List<Object> readConfig() {
        List<Object> config = new ArrayList<>();
        config.add(student);
        System.out.println(config);
        return config;
    }
}

在这里插入图片描述

读取集合

构造集合

package app.model;

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

import java.util.List;

@Data
@Component
@ConfigurationProperties(prefix = "mylist2")
public class MyList {
    private List<String> dbtypes;
}

读取集合

package app.controller;

import app.model.MyList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.ArrayList;
import java.util.List;

@RestController
public class TestController {
    // 读取集合
    private MyList myList;

    @Autowired
    public TestController(MyList myList) {
        this.myList = myList;
    }

    @GetMapping("/config")
    public List<Object> readConfig() {
        List<Object> config = new ArrayList<>();
        config.add(myList);
        System.out.println(config);
        return config;
    }
}

在这里插入图片描述

多环境配置

多平台的配置文件明明也有格式要求,其中 application-xxx.yml是固定的,xxx 是可以随意修改的。一般来说:dev是开发环境;prod是生产环境;test是测试环境
在这里插入图片描述
在 application.yml 中管理配置文件
这样就会在项目启动时读取dev中配置

#配置文件管理
spring:
  profiles:
    active: dev

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

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

相关文章

RK3568平台 设备模型sysfs文件系统

一.什么是 sysfs 文件系统 sysfs 文件系统是 Linux 内核提供的一种虚拟文件系统&#xff0c;用于向用户空间提供内核中设备&#xff0c;驱动程序和其他内核对象的信息。它以一种层次结构的方式组织数据&#xff0c;并将这些数据表示为文件和目录&#xff0c;使得用户空间可以通…

仰暮计划|“​爷爷说这些话的时候眼睛都红着,他那变形的脊柱和瘸拐的双腿都证明他曾为这个家付出了血汗拼尽了全力”

赴一场拾光之旅&#xff0c;集往年回忆碎片 爷爷生于1952年&#xff0c;今年已有七十一了&#xff0c;是河南焦作沁阳北金村的一位地道农民&#xff0c;劳苦一生&#xff0c;如今终于得以颐养天年。许是早年经历过于难忘&#xff0c;爷爷如今与我讲起仍是记忆犹新&#xff0c;…

【机器学习】机器学习流程之收集数据

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…

Leetcode刷题笔记题解(C++):590. N 叉树的后序遍历

思路&#xff1a;类似于二叉树的排序&#xff0c;这里需要将子树进行依次递归遍历&#xff0c;前序遍历也与之类似 /* // Definition for a Node. class Node { public:int val;vector<Node*> children;Node() {}Node(int _val) {val _val;}Node(int _val, vector<N…

2024年微信公众号链接爬取

通过输入&#xff08;或文件导入&#xff09;公众号名称&#xff0c;即可爬取该公众号所有历史文章。 通过公众号官方网站调用API&#xff0c;打开开发者工具后发现有 打开后发现有搜索结果的fakeid&#xff0c;这是每个公众号的标识。 点击某公众号后出现 这是具体公众号文章…

Github 2024-02-03 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-02-03统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目6C项目1TypeScript项目1JavaScript项目1PowerShell项目1Rust项目1 MLflow: 机器学习生命周期平台 …

NLP_Seq2Seq编码器-解码器架构

文章目录 Seq2Seq架构构建简单Seq2Seq架构1.构建实验语料库和词汇表2.生成Seq2Seq训练数据3. 定义编码器和解码器类4.定义Seq2Seq架构5. 训练Seq2Seq架构6.测试Seq2Seq架构 归纳Seq2Seq编码器-解码器架构小结 Seq2Seq架构 起初&#xff0c;人们尝试使用一个独立的RNN来解决这种…

Linux内核单独编译

现在的芯片功能越来越强大&#xff0c;功能也更加的丰富&#xff0c;为了推广自己的产品&#xff0c;一般芯片厂商都会提供一个包含Uboot&#xff0c;Kernel&#xff0c;Rootfs&#xff0c;以及芯片模块功能的SDK。一般在SDK中会有多个文件夹&#xff0c;比如uboot&#xff0c;…

Linux部署Nacos注册中心实现远程访问UI管理界面

Nacos是阿里开放的一款中间件,也是一款服务注册中心&#xff0c;它主要提供三种功能&#xff1a;持久化节点注册&#xff0c;非持久化节点注册和配置管理。 本例通过结合Cpolar内网穿透实现远程访问Nacos 提供的UI (控制台)界面,帮助管理所有的服务和应用的配置 Cpolar内网穿…

【Git版本控制 04】标签管理

目录 一、创建标签 二、查看标签 三、推送标签 四、删除标签 一、创建标签 标签tag&#xff0c;是对某次 commit 的⼀个标识&#xff0c;相当于起了⼀个别名。 相较于难以记住的 commit id &#xff0c; tag 很好的解决这个问题&#xff0c;因为 tag ⼀定要给⼀个让⼈容易…

嵌入式学习Day14 C语言 --- 位运算

位运算 注意&#xff1a;符号位也遵循这个规则 一、按位与(&) 运算规则&#xff1a;一假则假 int a 0x33;a & 0x55;0011 00110101 0101 &----------0001 0001 //0x11 二、按位或(|) 运算规则&#xff1a;一真则真 int a 0x33;a |0x55;0011 00110101 0101 |…

【k8s系列】(202402) 证书apiserver_client_certificate_expiration_seconds

apiserver_client_certificate_expiration_second证书定义的位置&#xff1a;kubernetes/staging/src/k8s.io/apiserver/pkg/authentication/request/x509/x509.go at 244fbf94fd736e94071a77a8b7c91d81163249d4 kubernetes/kubernetes (github.com) apiserver_client_certi…

[机器学习]K-means——聚类算法

一.K-means算法概念 二.代码实现 # 0. 引入依赖 import numpy as np import matplotlib.pyplot as plt # 画图依赖 from sklearn.datasets import make_blobs # 从sklearn中直接生成聚类数据# 1. 数据加载 # 生成&#xff08;n_samples&#xff1a;样本点&#xff0c;centers&…

83 CTF夺旗-Python考点SSTI反序列化字符串

这里写目录标题 CTF各大题型简介演示案例:CTF夺旗-Python-支付逻辑&JWT&反序列化CTF夺旗-Python-Flask&jinja2&SSTl模版注入CTF夺旗-Python-格式化字符串漏洞&读取对象 涉及资源&#xff1a; 我们这篇文章主要讲的是CTF在web渗透测试方向的3个考点 CTF各大…

【C语言】位与移位操作符详解

目录 1.⼆进制和进制转换 ①十进制&#xff1a;生活中最常用 ②二进制&#xff1a;计算机中使用的&#xff0c;每个数字称为一个比特 ③八进制、十六进制也如上 ④二进制转十进制 ⑤十进制转二进制 ⑥二进制转八进制 ⑦二进制转十六进制 2.原码、反码、补码 3.移位操…

计算机网络概念、组成、功能和分类

文章目录 概要1.怎么学习计算机网络2.概念3.功能、组成4.工作方式、功能组成5.分类 概要 概念、组成、功能和分类 1.怎么学习计算机网络 2.概念 通信设备&#xff1a;比如路由器、路由器 线路&#xff1a;将系统和通信设备两者联系的介质之类的 计算机网络是互连的、自治的的计…

【学习笔记】TypeScript学习笔记1 --TypeScript中的类型

文章目录 TS总的变量类型References TS总的变量类型 备注&#xff1a; 如果一个变量设置为了any 类型之后相当于变量关闭了TS的类型检测 let d: any; d 10; d hello;//unknown表示的是未知类型&#xff0c;实际是上一个安全的any,unknown类型的变量不能直接赋值给其他变量le…

Excel——自定义排序、多条件排序

一、自定义排序 Q&#xff1a;请按照“新疆、湖北、天津、北京、湖南”的先后顺序整理以下表格 A&#xff1a;步骤如下&#xff1a; 选择表格中任意一个单元格 选择【排序】——【自定义排序】 选择主要关键字【地区】&#xff0c;在次序中选择【自定义序列】 选择【添加】&…

C++ JSON解析

JSON解析 JSONCPPC实现JSON解析器 JSONCPP JSONCPP源码链接&#xff1a;https://github.com/open-source-parsers/jsoncpp JSOCPP源码下载以后&#xff0c;首先复制一份include文件夹下的json文件夹&#xff0c;头文件留着后续备用。 使用Cmake生成项目。在IDE中编译jsoncpp_…

使用SpringMVC实现功能

目录 一、计算器 1、前端页面 2、服务器处理请求 3、效果 二、用户登陆系统 1、前端页面 &#xff08;1&#xff09;登陆页面 &#xff08;2&#xff09;欢迎页面 2、前端页面发送请求--服务器处理请求 3、效果 三、留言板 1、前端页面 2、前端页面发送请求 &…