您现在的位置是:首页 > 正文

SpringBoot配置

2024-02-01 01:14:00阅读 3

配置文件分类

Spring boot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者 application.yml( application.yaml)进行配置

YAML全称是 YAML AiR’t Markup Language。YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAM库的不同的骗程语言程序导入,比如:C/C++,Ruby, Python,Java,Per,C#,PHP等。
YML文件是以数据为核心的,比传统的xm方式更加简洁
YAML文件的扩展名可以使用yml或者yaml

properties:

server.port=8080
server.address=127.0.0.1

yml/yaml:

server:
  port: 8080	
  address: 127.0.0.1

默认配置文件名称: application
在同一级目录下优先级为: properties>ym>yaml (一般为yml)

YAML/YML 基本语法

  • 小写敏感
  • 数据值前边必须有空格,作为分隔符
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格(各个系统Tab对应的空格数目可能不同,导致层次混乱)
  • 缩进的空格数目不重要,只要相同层级的元素左侧齐即可
  • #表示注释,从这个字符一直到行尾,都会被解析器忽略

YAML(yaml/yml)数据格式

  • 对象(map):键值对集合

    person:
      name: zhangsan
    # 行内写法
    person: {name: zhangsan}
    
  • 数组: 一组按次排列的值

    adderss:
      - beijing
      - shanghai
    # 行内写法
    address: [beijing,shanghai]
    
  • 纯量:单个的、不可再分的值

    mg1:'he11 \n woxld'#单引忽略转义字符(\n不进行转义)
    msg2:"he11 \n woxld"#双引识别转义字符(\n 进行换行转义)
    
  • 参数引用

    name: lisi
    
    person:
      name: ${name}  # 引用上边定义的name值
    

java代码读取配置内容

配置文件 application.yml

 name: abc
 
 person:
   name: zhangsan
   age: 20
   
 address:
   - beijing
   - shanghai

 mg1: 'he11 \n woxld'#单引忽略转义字符(\n不进行转义)
 msg2: "he11 \n woxld"#双引识别转义字符(\n 进行换行转义)
  • @Value
    public class HelloController {
    	@Value("${name}")
    	private String name;
    
    	@Value("${person.name}")
    	private String name2;
    
    	@Value("${person.age}")
    	private int age;
    
    	@Value("${address[0]}")
    	private String address1;
    
    	@Value("${msg1}")
    	private String msg1;
    
    	@Value("${msg2}")
    	private String msg2;
    
    	public String hello2() {
    	
       		System.out.println(name);
        	System.out.println(name2);
        	System.out.println(age);
        	System.out.println(address1);
        	System.out.println(msg1);
        	System.out.println(msg2);
        
    	}
    }
    
  • Environment
    import org.springframework.core.env.Environment;
    
    public class HelloController {
    	// 将配置文件全部配置封装为 Environment 对象
    	@Autowired
    	private Environment env;
    	
    	public String hello2() {
    		// 利用 Environment  对象中getProperty 方法获取配置文件数据
    		System.out.println(env.getProperty("person.name"));
        	System.out.println(env.getProperty("address[0]"));
        }
    }
    
  • @ConfigurationProperties
    配置文件
    person:
    	name: zhangsan
    	age: 20
    	address:
    		- beijing
    		- shanghai
    
    person类
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Data
    @Component
    @ConfigurationProperties(prefix = "person")
    public class Person {
    	private String name;
    	private int age;
    	private String[] address;
    }
    
    public class HelloController {
    	@Autowired
    	private Person person;
    	
    	public String hello2() {
    		System.out.println(person);
        	String[] address = person.getAddress();
        	for (String s : address) {
           		System.out.println(s);
        	}
        }
    }
    

配置profile

在开发 Spring boot应用时,通常同一套程序会被安装到不同环境
比如:开发、测试生产等。其中数据库地址服务器端口等等配置都不同,如果每次打包时,都要修改配置文件

profile功能就是来进行动态配置切换的

  • 多profile文件配置
    在这里插入图片描述
    配置多个application-XX.properties文件
    在application.properties 文件配置
    spring.profiles.active=XX # 配置多个文件的后缀
    
  • YML多文档配置(用- - - 三杠区分)
    ---
    server:
     port: 8081
    
    spring:
    	profiles: dev
    ---
    server:
    port: 8082
    
    spring:
    	profiles: test
    ---
    server:
    port: 8083
    
    spring:
    	profiles: pro
    ---
    # 配置激活的文档
    spring:
    	profiles:
    		active: dev
    
  • 虚拟机 配置方式(-Dspring.profiles.active=dev)
    在这里插入图片描述
  • 环境配置(--spring.profiles.active=dev)
    在这里插入图片描述
  • jar包运行方式(java -jar xxx.jar --spring.profiles.active=dev)
    在这里插入图片描述

网站文章

  • 【设计模式】桥接模式

    【设计模式】桥接模式

    设计模式大总结 桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。一。简解桥接模式顾名思义,是在两个模块间搭的一个桥,这两个模块就是抽象化和实现 抽象由抽象类或者接口声明的,作为一类类的抽象 实现则是继承抽象类或者

    2024-02-01 01:13:32
  • Android中根据手机的分辨率dp和px之间的转换

    public class UnitUtil { /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dp2px(Context context, float dpValue) { final float scale = context.getResources().getDisplay...

    2024-02-01 01:13:24
  • 理解KMP算法

    理解KMP算法

    KMP算法用于字符串模式匹配,目标串T=[T1.....Tn],模式串P=[P1....Pm],这里n>=m,i代表T的索引指针,j代表P的索引指针,传统字符串匹配算法,在Ti!=Pj的时候,i指针需要回退到i-j的位置,同时j回退到0,也就是模式串P开始的位置,这样传统算法的匹配过程的复杂度就是O(m*n)。其实在Ti!=Pj的时候,i指针不需要回退,[Ti-j+1...Ti-1]和[P1...

    2024-02-01 01:13:16
  • 微电子学与计算机期刊2019,微电子与通信工程学院研究生两篇论文被人工智能顶级会议AAAI 2019接收...

    微电子学与计算机期刊2019,微电子与通信工程学院研究生两篇论文被人工智能顶级会议AAAI 2019接收...

    近日,微电子与通信工程学院研究生有两篇文章被国际人工智能领域顶级学术会议AAAI 2019(AAAI Conference on Artificial Intelligence 2019)录用。AAA...

    2024-02-01 01:12:50
  • linux get current thread count and system threads limit

    get current thread count grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }'get the system thread limitcat /proc/sys/kernel/threads-max转载于:https://www.cnblogs.com/l...

    2024-02-01 01:12:37
  • Linux实战操作

    Linux实战操作

    LinuxLinux目录一、pandas是什么?二、使用步骤1.引入库2.读入数据总结Linux目录登录系统后,在当前命令窗口下输入命令:查看linux目录ls / 或 ll /bin->user/...

    2024-02-01 01:12:30
  • vue3.0 store抽离,模块导入

    store/index.js import Vue from 'vue' import Vuex from 'vuex' import getters from &#3...

    2024-02-01 01:12:02
  • 适合初学者!超详细的vscode的C++自定义头文件的配置! 热门推荐

    适合初学者!超详细的vscode的C++自定义头文件的配置! 热门推荐

    vscode的环境下,C++自定义头文件的解决方法!

    2024-02-01 01:11:55
  • std::find和std::string::find

    总之,std::find,最好拿来查找任意元素。std::string::find,最好拿来查找子字符串。

    2024-02-01 01:11:48
  • Android 开发中找不到 “gen”目录的问题

    今天写个Android的小程序,突然提示错误 Project ‘Project Name’ is missing required source folder: ‘gen’。费了半天劲原来是因为JDK...

    2024-02-01 01:11:19