SpringBoot配置

配置文件分类

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)
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值