SpringBoot2.X入门(一):Spring配置文件学习

Spring Boot 2 ● Create stand-alone Spring applications ○ 创建独立Spring应用 ● Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files) ○ 内嵌web服务器 ● Provide opinionated ‘starter’ dependencies to simplify your build configuration ○ 自动starter依赖,简化构建配置 ● Automatical 阅读详情

一、YAML文件的不足

YAML文件的优势可以说一目了然,目前YAML的不足,例如无法通过@PropertySource注解来加载配置。但是,YAML加载属性到内存中保存的时候是有序的,所以当配置文件中的信息需要具备顺序含义时,YAML的配置方式比起properties配置文件更有优势。

二、自定义参数

自定义的参数可以在应用中使用@Value来获取。

@Value注解支持两种表达式配置

  • PlaceHolder方式,格式为 ${...},大括号内为PlaceHolder
  • SpEL表达式(Spring Expression Language), 格式为 #{...},大括号内为SpEL表达式
book.name=SpringCloudInAction
book.author=ZhaiYongchao
@Component
public class Book {

    @Value("${book.name}")
    private String name;
    @Value("${book.author}")
    private String author;

    // 省略getter和setter
}

三、参数引用

在配置文件中可以使用${...}的方式来引用其他参数。

疑问:有没有先后顺序之分?

book.name=SpringCloud
book.author=ZhaiYongchao
book.desc=${book.author}  is writing《${book.name}》

四、随机数

可以使用${random}来生成随机数。比如:秘钥,程序端口等。

# 随机字符串
com.lifeisftc.blog.value=${random.value}
# 随机int
com.lifeisftc.blog.number=${random.int}
# 随机long
com.lifeisftc.blog.bignumber=${random.long}
# 10以内的随机数
com.lifeisftc.blog.test1=${random.int(10)}
# 10-20的随机数
com.lifeisftc.blog.test2=${random.int[10,20]}

五、命令行参数

java -jar xxx.jar --server.port=8888

可以直接以命令行的方式来设置某些属性。

六、多环境配置

属性名:spring.profiles.active

多环境的配置思路:

  • application.properties中配置通用内容,并设置spring.profiles.active=dev,以开发环境为默认配置
  • application-{profile}.properties中配置各个环境不同的内容
  • 通过命令行方式去激活不同环境的配置

七、Spring Boot对数据文件的加载顺序(优先级由高到低)

Spring Boot为了能够更合理的重写各属性的值,使用了下面这种较为特别的属性加载顺序:

  1. 命令行中传入的参数;
  2. SPRING_APPLICATION_JSON中的属性。SPRING_APPLICATION_JSON是以JSON格式配置在系统环境变量中的内容;
  3. java:comp/env中的JNDI属性;
  4. Java的系统属性,可以通过System.getProperties()获得的内容;
  5. 操作系统的环境变量;
  6. 通过random.*配置的随机属性;
  7. 位于当前应用jar包之外,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件;
  8. 位于当前应用jar包之内,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件;
  9. 位于当前应用jar包之外的application.properties和YAML配置内容;
  10. 位于当前应用jar包之内的application.properties和YAML配置内容;
  11. 在@Configuration注解修改的类中,通过@PropertySource注解定义的属性;
  12. 应用默认属性,使用SpringApplication.setDefaultProperties定义的内容;

我们可以感受到这个优先级顺序的用意是Spring Boot想要将多环境配置逐渐转移到由外部操作来控制,而不是改程序文件或者代码。

八、配置文件绑定

1.下面的4种配置方式都是等价的(移除特殊字符,还会将配置均以全小写的方式进行匹配和加载):

推荐使用全小写配合-分隔符的方式来配置,比如:spring.jpa.database-platform=mysql

spring.jpa.databaseplatform=mysql
spring.jpa.database-platform=mysql
spring.jpa.databasePlatform=mysql
spring.JPA.database_platform=mysql

2.List类型

在properties文件中使用[]或者逗号来定位列表类型,[]中的值必须是连续的,不然会抛出UnboundConfigurationPropertiesException异常。

// 1.[]方式
spring.my-example.url[0]=http://example.com
spring.my-example.url[1]=http://spring.io
//2.逗号方式
spring.my-example.url=http://example.com,http://spring.io

在YML文件中的配置方式

// 1.第一种方式
spring:
  my-example:
    url:
      - http://example.com
      - http://spring.io
// 2.逗号方式
spring:
  my-example:
    url: http://example.com, http://spring.io

3.Map类型

// 1.properties格式
spring.my-example.foo=bar
spring.my-example.hello=world
// 2.YML格式
spring:
  my-example:
    foo: bar
    hello: world


// 特殊的,如果Map类型的key包含非字母数字和-的字符,需要用[]括起来,比如,代表这是一个整体

spring:
  my-example:
    '[foo.baz]': bar

 

Spring Boot 2.x 实战入门 Tags: MyBatis,Spring Boot,Thymeleaf,JPA,热部署,Spring Data,Spring Cloud 学习地址: http://edu.51cto.com/course/13147.html 课程章节: 第1章Spring Boot 2.X快速入门45分钟1节      1-1Spring Boot 2.x 快速上手[免费观看]45:51 第... 阅读详情

相关推荐

SpringBoot2.1官方文档 完整版

SpringBoot2.1官方文档 十分详细

【SpringBoot】官方表达式语言SPEL(Spring Expression Language)全方位学习

**SpEL表达式的默认格式为:`#{expression}`。SpEL表达式以“`#”`开头,表达式主体包围在花括号中。** - 我们通常使用的属性取值表达式(也可称为`属性占位符,格式${expression}`)不可以嵌套SpEL表达式。不过SpEL表达式可以嵌套属性取值表达式,如下: ```java #{${someProperty} + 2} //如果属性“someProperty”的值是2,这个表达式的值就是4。 ```

墩墩分墩 6900

麒麟KylinV10系统yum源更换全攻略:从官方源到第三方仓库的保姆级教程

本文详细介绍了麒麟KylinV10系统yum源的更换与优化方法,包括官方源配置、第三方仓库集成及RPM包管理技巧。通过实战案例和命令示例,帮助用户快速解决软件依赖问题,提升系统管理效率。特别适合需要在国产操作系统上进行开发的工程师参考。

weixin_30752699的博客 647

springboot2.x、3.x学习

springboot2.x一、零散知识点补充 一、零散知识点补充 1、@Import注解:导入组件,给容器中自动创建组件 (1)@Import必须配合组件声明的注解一起使用,比如:@Configuration、@Controller、@Service (2)案例代码:使用@Import (3)获取容器中的组件并打印 (4)运行结果:可以看见容器中已经有相关的bean了 2、@Conditional()注解:满足指定条件给容器中创建组件 举两个实现@Conditional的例子: (1)使用@Condi

furenqiang的博客 3676

物流系统集成实战:从零开始用Java对接国际快递(DHL/FedEx/UPS)

本文详细介绍了如何使用Java技术栈对接DHL、FedEx和UPS三大国际快递巨头的API,构建高效、稳定的物流集成解决方案。内容涵盖认证机制、报文标准、多语言支持等关键点,并提供实战代码示例和最佳实践,帮助开发者快速实现国际快递系统集成。

efc1234567的博客 693

【TensorRT】TensorRT C# API 项目介绍:基于C#与TensorRT部署深度学习模型(上篇)

开发了TensorRT C# API 2.0版本,该版本在开发时充分考虑了上一版本应用时出现的问题,并进行了改进。同时在本版本中,我们对接口进行了优化,使用起来更加简单,并同时提供了相关的应用案例,方便开发者进行使用。

grape_yan的博客 3038

[Spring] SpringBoot2 简介(一)—— 基础配置

(1)配置繁琐Spring 的组件代码是轻量级的,但是它的配置文件是重量级的。在思考 Spring 特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写程序的时间。(2)依赖繁琐自己导入 maven 很可能会导致依赖冲突,还得自行判断版本号。YAML全称是YAML Ain't Markup Language。YAML是一种直观的能够被电脑识别的的数据数据序列化格式;容易被人类阅读,容易和脚本语言交互,可以被支持 YAML 库的不同的编程语言程序导入;

joyride_run的博客 1821

用angr找到strcpy的栈溢出漏洞

这篇文章其实是分析angr文档里给出的一个挖漏洞的小例子。 原文链接在此:https://docs.angr.io/examples#beginner-vulnerability-discovery-example-strcpy_find 这是第一个用angr在二进制里找可利用条件的教程。第一个例子是一个非常简单的程序。这个angr脚本会从程序的entry到strcpy找到一条路径。(只有我们能够控制strcpy的参数的时候) 为了找到正确的路径,angr需要去算一个密码参数,算这个密码,angr只要2s

^_^ 1220

SpringBoot2基础篇

本博客 一至六章节笔记 是根据b站狂神SpringBoot视频()整理而来 视频链接如下:https://www.bilibili.com/video/BV1PE411i7CV?p=1&vd_source=f4a032fee75744e378f4ac30c7e8ad39七至八章节笔记,是根据b站黑马程序员SpringBoot视频()整理而来 视频链接如下:https://www.bilibili.com/video/BV15b4y1a7yG/?spm_id_from=333.337.search-card.

weixin_51714391的博客 2447

Android 13 wificond讲解

Android 13 wificond讲解

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 2932

【光子AI / Photon.AI】manus 通用 Agent 的实现核心技术原理与应用

摘要 Manus是一款由国内团队开发的通用AI Agent,其核心技术原理基于多智能体协作架构、云端全能沙箱、规划-执行-反思循环等系统工程方法。与传统的对话式AI不同,Manus能够在独立的Linux虚拟机环境中自主规划并执行复杂任务,通过编写和运行代码来解决问题,具备强大的纠错能力和工具使用能力。 核心应用场景包括深度行业研究、自动化办公、生活助理、辅助编程和跨平台信息整合等。Manus的工程化落地优势体现在沙箱环境、多智能体调度和容错机制等方面,使其能够完成需要多步骤操作和多种工具调用的复杂任务,将A

AI天才研究院 666

经典再现,看到就是赚到。尚硅谷雷神 - SpringBoot 2.x 学习笔记 - 基础入门篇

SpringBoot 2.0 视频学习地址:https://www.bilibili.com/video/BV1Et411Y7tQ?p=112&spm_id_from=pageDriver 1、Spring与SpringBoot 1.1、Spring是什么?Spring能做什么? Spring 被称为 J2EE 的春天,是一个开源的轻量级的 Java 开发框架, 具有控制反转(IOC)和面向切面(AOP)两大核心。Java Spring 框架通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

laizhenghua的博客 2941

【LaTex】3.5 数据分析

简述了LaTex柱状图、饼图、折线图的画法。

你的指尖有改变世界的力量 5887

学习Spring Boot的必读之书《深入浅出 Spring Boot 2.x》

首先,本书对比了传统 Spring 框架和 Spring Boot 的开发区别,并演示了搭建 Spring Boot 开发环境的过程,随后深入讲解了全注解下的Spring 基础 IoC 和 AOP 概念,使初学者能够轻松上手 Spring Boot 的全注解开发方式。是 Spring Boot 的核心重点,书中从 Spring MVC 的基础讲起,概述它的全流程处理和常见组件,随后深入讲解 Spring MVC 的开发和应用,帮助读者掌握各种 Spring Web 后端开发技巧。

8534

Arduino、ESP32驱动AS3935数字闪电传感器(闪电传感器)

闪电传感器采用AMS独具创新的AS3935数字闪电传感芯片与Coilcraft的MA5532-AE专用天线,可在室内或室外,安全地检测方圆40km范围内发生闪电的距离,闪电相对强度与统计闪电发生次数。

不脱发的程序猿 2008

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

SpringBoot2.x系列教程汇总-从入门到精通

因为优快云没有分类归纳博客的功能,所以特写本帖汇总SpringBoot2.x系列教程,方便大家查阅! SpringBoot2.x系列教程01--史前文明之Spring简介 SpringBoot2.x系列教程02--史前文明之Spring发展史 SpringBoot2.x系列教程03--新纪元之SpringBoot初相见 SpringBoot系列教程04--新纪元之SpringBoot环境......

一一哥 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

springboot2.X配置文件及yml的使用

1.springboot2.X配置文件 a.Springboot的自动配置是基于约定的(默认端口为8080),可以使用配置文件对默认的配置进行修改; b.默认的全局配置文件: 1. application.properties 语法结构:key=value 2. application.yml:yaml...

wangtao的博客 4438

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SpringBoot2.X配置文件及优先级

SpringBoot2.X配置文件及优先级 SpringBoot启动时会扫描以下位置的application.yml配置文件或者application.properties配置文件作为SpringBoot的默认配置文件,其中同一个位置下的.properties配置文件优先级大于.yml配置文件。 file:./config/(当前项目目录下的config目录) file:./(当前项目目录下) c...

weixin_44176169的博客 1038

Spring Boot2.x: 快速入门指南

Spring Boot2: 快速入门指南 简述 对于之前的Spring框架的使用,各种配置文件XML、properties一旦出错之后错误难寻 这也是为什么Spring Boot被推上主流的原因,现在更是微服务当道 SpringBoot的配置简单,说5分钟能从框架的搭建到运行也不为过 优点 极短的时间内启动并运行 不必安装Web服务器,例如Tomcat 强大的依赖库管理 简单的配置文件,注解 本文要点 本文将带你快速创建一个Spring Boot项目体验,启动并实现在浏览器访问接口得到一个Hello

Java Pro 19万+

SPRINGBOOT2.X入门学习

## 关于数据库参数的相关配置 spring: datasource: name: mysql_test type: com.alibaba.druid.pool.DruidDataSource #druid相关配置 druid: #监控统计拦截的filters filters: stat driver-class-name: com.mysql.jdbc.Driver

atgoingguoat的专栏 444

SpringBoot2.x 配合 Redis 操作

我们都知道,把首页数据放到Redis里,能够加快首页数据的访问速度。但是我们要如何准确又快速的将 Redis 整合到自己的 SpringBoot2.x 项目中呢?今天阿淼就带大家爬一爬其中的门门道道。 序、Redis 介绍 Redis 使用了浪费流量的文本协议,但因为它数据存储在内存中的,相对而言,依然可以取得极高的访问性能。并且 Redis 是线程安全的。 RESP 就是 Redis 序列化协议的简称。它是一种直观的文本协议,优势在于实现异常简单,解析性能极好。 Redis 协议里面虽然有大量冗余的回车

Java学习之道 7996

全套SpringBoot2.x入门到项目实战课程系列(第1章 Spring Boot 概要、第2章 Spring Boot 入门开发)

全套SpringBoot入门到项目实战课程系列第1章 Spring Boot 概要1.1 Spring Boot 介绍1.2 Spring Boot 优点第2章 Spring Boot 入门开发技术点要求:2.1 环境要求2.2 修改Maven配置文件2.3 IntelliJ IDEA 设置2.4 快速构建 Spring Boot 项目2.4.1 创建 Maven工程2.4.2 修改 pom.xm...

baidu_33267079的博客 1079

Spring Boot 2.x使用篇(一)—— 初识Spring Boot

文章目录1、Spring Boot 2.x概述1.1 Spring Boot与Spring1.2 Spring Boot与Spring MVC1.3 Spring Boot的优点2、IntelliJ IDEA中搭建Spring Boot开发环境2.1 使用Spring Initializr自动创建项目2.2 IntelliJ IDEA中搭建多模块项目2.3 Spring Boot的依赖和自动配置2...

王喆峰的博客 3047

最佳实践之SpringBoot.2.X里面的配置文件

摘要:本文介绍了SpringBoot 2.x中常见的配置文件形式(XML、YAML、Properties)及使用区别,重点讲解了YAML的树状结构语法和Properties的键值对格式。同时演示了两种配置加载方式:通过@Value注解直接映射属性和使用@ConfigurationProperties绑定实体类,并分析了配置注入失败的常见原因及解决方案。文章还提供了SpringBoot官方配置文档参考,建议开发时将相关配置属性集中管理以提高代码可读性和维护性。

m0_59519985的博客 1083

SpringBoot入门(一)SpringBoot项目的创建

SpringBoot相对于最早的三大框架SSH那一坨,还有之前的SpringMVC各种xml配置,简直是方便太多了,SpringBoot的主旋律就是AutoConfig,自动配置,简直不要太爽!如果你是一个安卓开发人员(或者懂Java语法),即便你从未接触过后端,也能很快上手! 直接入题,首先安装IDEA,最优秀的Java开发工具!IDEA是收费的,至于怎么可以白X,大家都懂! (另外,JDK环境变量是必不可少的,所以要先下载JDK8并安装配置环境变量)! 安装完毕后,打开IDEA: 第一步:创建新项目:

白玉梁的专栏 2917

Spring Boot 2.x 基础教程:快速入门

Spring Boot 2.x 基础教程:快速入门

Lanminy的博客 2550
上一篇: 开启-XX:+PrintGCDetails,具体日志内容分析
下一篇: SpringBoot2.X学习(二):使用Swagger2构建强大的API文档
life is ftc
博客等级 码龄9年 19粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值