spring boot 之配置文件yarm读取04
1.springboot 读取配置文件yarn
1.1 准备配置文件yaml
在main目录下新建resources目录,并设置为Root Resources,新建文件application.yaml
server:ip: 10.1.0.6hostname: hadoop-bd1admin: zhangsan
yaml是替代传统的xx.properties文件,是一种方便的定义层次配置数据的格式
1.2 创建配置类,通过@Value来注入值
1.2.1 @Value(“xxx”)直接指定值
package com.mp.prj.domain;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class Server01 {@Value("10.1.0.1")private String ip;@Value("hadoop-bd1")private String hostname;@Value("1")private int admin;public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}public String getHostname() {return hostname;}public void setHostname(String hostname) {this.hostname = hostname;}public int getAdmin() {return admin;}public void setAdmin(int admin) {this.admin = admin;}@Overridepublic String toString() {return "Server01{" +"ip='" + ip + '\'' +", hostname='" + hostname + '\'' +", admin=" + admin +'}';}
}
使用@SpringBootTest 单元测试
package com.mp.test;import com.mp.prj.AppTest;
import com.mp.prj.domain.Server01;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;/*
* @SpringBootTest:用于springboot项目微服务单元测试,需要指定classes 启动类
@RunWith :需要指定
* */@RunWith(SpringRunner.class)
@SpringBootTest(classes = AppTest.class)
public class IocTest02 {@AutowiredServer01 server01;@Testpublic void test02(){System.out.println(server01);}
}
运行结果:
Server01{ip='10.1.0.1', hostname='hadoop-bd1', admin=1}
1.2.2 @value("#{1+2}") 通过SPel表达式
package com.mp.prj.domain;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class Server02 {private String ip;private String hostname;@Value("#{1+0}")private int admin;public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}public String getHostname() {return hostname;}public void setHostname(String hostname) {this.hostname = hostname;}public int getAdmin() {return admin;}public void setAdmin(int admin) {this.admin = admin;}@Overridepublic String toString() {return "Server01{" +"ip='" + ip + '\'' +", hostname='" + hostname + '\'' +", admin=" + admin +'}';}
}
同样单元测试,也是可以捕获到信息
1.2.3 @value("${xx.xxxx}") 从配置文件中读取
package com.mp.prj.domain;import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;/*
* 这里使用@Configuration 注解,作用于类上,表明这个类为一个配置类,其实里面也包含有@Component注解
* */
@Configuration
public class Server03 {@Value("${server.ip}")private String ip;@Value("${server.hostname}")private String hostname;@Value("${server.admin}")private int admin;public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}public String getHostname() {return hostname;}public void setHostname(String hostname) {this.hostname = hostname;}public int getAdmin() {return admin;}public void setAdmin(int admin) {this.admin = admin;}@Overridepublic String toString() {return "Server01{" +"ip='" + ip + '\'' +", hostname='" + hostname + '\'' +", admin=" + admin +'}';}
}
测试运行结果:
Server01{ip='10.1.0.6', hostname='hadoop-bd1', admin=1}
1.2.4 针对1.2.3从配置文件中读取,简化版
(1)针对属性值很多的情况下,我们每一个属性都要去写@Value 配置,那岂不是很麻烦,所以我们这里可以指定配置前缀
(2)通过@ConfigurationProperties 我们取指定配置文件的前缀
(3)字段名默认和配置文件中处前缀后一致的情况下,是可以省略掉@Value注解的
package com.mp.prj.domain;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;/*
* 这里使用@Configuration 注解,作用于类上,表明这个类为一个配置类,其实里面也包含有@Component注解
* */
@Configuration
@ConfigurationProperties(prefix = "server") //指定配置文件的前缀
public class Server04 {private String ip;private String hostname;private int admin;public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}public String getHostname() {return hostname;}public void setHostname(String hostname) {this.hostname = hostname;}public int getAdmin() {return admin;}public void setAdmin(int admin) {this.admin = admin;}@Overridepublic String toString() {return "Server01{" +"ip='" + ip + '\'' +", hostname='" + hostname + '\'' +", admin=" + admin +'}';}
}
同样,我们是可以得到结果的
2.多环境Yaml配置文件
(1)很多情况下,我们会将开发和生成环境等多种配置放在一个yaml配置文件中,要求支持多环境切换
(2)通过spring.profiles 来指定该文档应用于哪个环境
(3) 配置文件中使用— 分割配置文件
2.1 使用spring.profiles.active 环境属性来指定哪些配置文件处于活动状态
spring:profiles:active: pro
---
spring:profiles: dev
server:ip: 10.1.0.6hostname: hadoop-bd1admin: 1
---
spring:profiles: pro
server:ip: 192.168.1.128hostname: hadoop-bd100admin: 0
2.2 以编程方式启动配置文件
@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication app = new SpringApplication(DemoApplication.class);//启动dev配置文件app.setAdditionalProfiles("dev"); // dev 或prodapp.run(args);}
}
spring boot 之配置文件yarm读取04相关推荐
- spring boot 外部配置文件1-spring.config.location与spring.config.additional-location的区别
spring boot外部配置文件 基础环境 : 基础环境 版本 spring boot 2.7.0 JDK 8 测试代码: @SpringBootApplication public class D ...
- java配置文件放置到jar外_java相关:Spring Boot 把配置文件和日志文件放到jar外部...
java相关:Spring Boot 把配置文件和日志文件放到jar外部 发布于 2020-3-6| 复制链接 如果不想使用默认的application.properties,而想将属性文件放到jar ...
- Spring Boot —— YAML配置文件
引言 首先,YAML并不是仅仅可以使用在Java项目中,它是一种类似于json结构的标记语言,可以为所有的编程语言服务.它强调更直观的层级表示,比较适合描述配置文件中的层级关系. Spring Boo ...
- Spring Boot通过配置文件区分测试和生产环境
Spring Boot通过配置文件区分测试和生产环境 方法一:我们定义三个配置文件,一个是开发,我们定位为:application-dev.yml,另一个是生产,我们定义为application-pr ...
- Spring Boot的配置文件加载优先级
基于Spring Boot 2.x详细介绍了Spring Boot的配置文件的加载优先级. 文章目录 1 总体优先级 2 内部配置优先级 3 bootstrap和application的优先级 1 总 ...
- Spring Boot默认配置文件加载顺序(四)
通常情况下,Spring Boot 在启动时会将 resources 目录下的 application.properties 或 apllication.yml 作为其默认配置文件,我们可以在该配置文 ...
- Spring Boot (4)---配置文件详解
Spring2.0 Boot配置文件详解 配置文件说明 Spring Boot 配置文件允许为同一套应用,为不同的环境用不同的配置文件.比如开发环境.测试环境.生成环境.你可以用 properties ...
- Spring Boot 实现配置文件加解密原理
Spring Boot 配置文件加解密原理就这么简单 背景 接上文<失踪人口回归,mybatis-plus 3.3.2 发布>[1] ,提供了一个非常实用的功能 「数据安全保护」 功能,不 ...
- 企业分布式微服务云SpringCloud SpringBoot mybatis (二)Spring Boot属性配置文件详解...
相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷.我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁 ...
最新文章
- 数论(Lucas定理) HDOJ 4349 Xiao Ming's Hope
- linux mint 17.3 内核,LinuxMint 17.3 Cinnamon抢鲜评测
- PHP语法分析器:RE2C BISON 总结
- ubuntu系统安装的MySql数据库,远程不能访问的几种可能问题
- Linux里su报错bash不是目录,Linux基础:关于su 命令的的几个相关报错
- 计算机联锁软件毕设论文,铁路信号计算机联锁系统()毕设论文.doc
- 代码执行漏洞原理/防御
- 异步fifo_FIFO工作的原理
- 查询oracle 表记录数,Oracle 查询所有表的记录数
- 大选期间完成25亿推送:美国移动push平台Urban Airship架构解密
- 微信h5游戏如何在微信中做好域名防封 防屏蔽的 工作
- 开机动画适配方案_修改开机动画教程
- jw player 6 断点续播 seek()
- 国产BI报表工具中低调的优秀“模范生”——思迈特软件Smartbi
- Dynamic Knowledge Graph Completionwith Jointly Structural and Textual Dependency
- tv3描述文件代理服务器,超强悍技术贴!Apple TV3复活DNS的刷机全教程
- 栈的操作(入栈、出栈)之一:顺序栈
- 在Ubuntu下编译运行C语言程序
- oracle修改clob值,oracle 修改 clob字段,查询clob字段
- 仓库 “http://ppa.launchpad.net/chris-lea/node.js/ubuntu bionic Release”
热门文章
- uniapp返回上一页
- Overture如何设置四手联弹的乐谱
- 幕墙建筑材料英国UKCA认证—EN 1364-3
- 在线考试中有关保存试卷的问题
- 保险 - http://218.9.202.55:8083/siweb/comp/menu/heb_menu/index.jsp
- linux temp文件夹在哪_全方位剖析 Linux 操作系统,太全了
- 通俗易懂VS项目中的web config配置文件
- 数据库实训项目之图书借阅系统
- k8s 添加 node
- Failure to find was cached in the local repository