二、SpringBoot--割り当ておよび関連する注記

構成1 SpringBootの説明

グローバルプロファイル使って春ブーツ
の下のsrc /メイン/リソースディレクトリ・パスまたはクラス/コンフィグを設定ファイルを
プロファイルのアクション:自動設定のデフォルト値を変更SpringBoot; SpringBootを底には、私たちが自動的に設定されました

SpringBoot 2つのプロファイル
application.properties
application.yml

2 YAML設定

1)YAMLの概要
YAML(YAMLはマークアップ言語ではありません)
YAMLマークアップ言語A:マークアップ言語である
YAMLは言語、マークアップされていません:ないマークアップ言語は、

マークアップ言語:以前のコンフィギュレーションファイル、それらのほとんどはxxxx.xmlファイルを使用している、
YAML:JSONよりデータ中心、XMLとそうは設定ファイルに適しています。


サーバー:
ポート:8081

2)YAML構文(http://www.yaml.org/参照構文仕様)

、YAML基本的な構文
インデント階層を使用するためには、
空間のみを使用することができますをインデントするためにTabキーを使用するときに許可されていません。
インデントのスペースの数であれば、アライメントの同一レベルの左側要素があることができるように、問題ではない
大文字と小文字を区別

3つのデータBは、YAML支持構造
I)は、オブジェクト:キーと値のペアのセットを

最初に書き込ま
フレンズ:
lastNameの:zhangsan
年齢:20

2回目の書き込み(書き込みインライン注単一引用符)
友達:{「lastNameの」:zhangsan、「年齢」:} 18であります

ここに画像を挿入説明

II)配列:の順に配置された値の組
書き込ま最初
によって- ( - )ブランクは、素子アレイの値を表し
:Qucik事実ペット
CAT -
-犬
-ブタを

2回目の書き込み(書き込みインライン)ペット:[猫、犬、豚]

III)リテラル(数値、文字列、ブール値、日付):個々の、分割された値にすることはできません
K:V:文字通り直接書き込む;
ていない、単一または二重引用符内の文字列デフォルト;
「」:二重引用符は、内部の特殊文字列をエスケープしません;自身が表現したい意味などの特殊文字
名:「zhangsanの\ nはリージ」 : 出力を、zhangsanラップリージ
「」:単一引用符は、特殊文字をエスケープします、最終的に特殊な文字列データだけで普通
名称:「zhangsanの\ nはリージ」 : 出力; zhangsan \ nはリージ

ここに画像を挿入説明

ここに画像を挿入説明
https://nodeca.github.io/js-yaml/ YAMLの構文チェック

IV)複合構造体。上記の任意の組み合わせが可能言葉遣いです

注意:春ブーツがsnakeyamlの解決YMLファイルを使用して、
https://bitbucket.org/asomov/snakeyaml/wiki/Documentation#markdown-header-yaml-

3 YAMLのデモ

1)新springbootエンジニアリング
新新Module1の春Initializr-
2)が導入され、Mavenの依存


org.springframework.boot
springboot-ウェブスターター

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-configuration-processor</artifactId>
		<version>2.1.6.RELEASE</version>
		<optional>true</optional>
	</dependency>
	导入配置文件处理器这个依赖包,可以提示YAML配置的编写,在这个过程中maven 依赖unkonw,到maven仓库网站查询依赖信息(https://mvnrepository.com/),拷贝过来就解决了
</dependencies>

3)犬の人と2つのクラスを作成
ここに画像を挿入説明
ここに画像を挿入説明
@ConfigurationPropertiesを:対応する設定バインドのため、このクラスのすべての属性と設定ファイルSpringBootを知らせる;
接頭辞=「人」:プロファイル以下のすべてが1つのマッピングをどの属性に
このコンポーネントは、コンポーネントだけの容器であり、@ConfigurationPropertiesは容器を提供する機能
が必要と@Componentの使用となるように

4)新建并编写yaml配置文件
ここに画像を挿入説明
在测试过程中发现打印的信息为null,
排查总结
首先:校验yaml是否正确(https://nodeca.github.io/js-yaml/)
其次:对应的属性名称是否一致
再次:get set方法是否齐全,@ConfigurationProperties,@Component注解是否有配置
最后:如果有嵌套的属性 如dog中的属性名注意使用单引号
5)测试
ここに画像を挿入説明
6)注销掉yaml配置,在properties中配置如下,进行测试
ここに画像を挿入説明
7 )解决中文乱码
file–setting–Editor–file Encodings,修改为UTF-8,并选择上转asc码
ここに画像を挿入説明

4 配置文件值注入@Value
1)@Value
@Value是Spring中的注解,作用类似于xml中配置bean



注销掉@ConfigurationProperties 添加@Value查看测试结果
ここに画像を挿入説明
2)@Value和@ConfigurationProperties为属性注值对比
ここに画像を挿入説明
属性名匹配规则(Relaxed binding松散绑定)
– person.firstName:使用标准方式
– person.first-name:大写用-
– person.first_name:大写用_
– PERSON_FIRST_NAME:
• 推荐系统属性使用这种写法

@ConfigurationProperties
– 与@Bean结合为属性赋值
– 与@PropertySource(只能用于properties文件)结合读取指定文件
• @ConfigurationProperties Validation
– 支持JSR303进行配置文件值校验;

ここに画像を挿入説明
3)如何选择@ConfigurationProperties @Value
如果说我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果说我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

5 @PropertySource 加载指定的配置文件
配置都写在application.yml或者application.properties文件中会导致全局配置文件过大,不便管理。因此新建一个person.yml专门配置Person属性,
ここに画像を挿入説明
6 @ImportResource导入Spring的配置文件
导入Spring的配置文件,让配置文件里面的内容生效
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上
ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明

推荐用下面的方式

SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式
1)、配置类@Configuration------>Spring配置文件 相当于spring 的xml配置文件
指明当前类是一个配置类;就是来替代之前的Spring配置文件
2)、使用@Bean给容器中添加组件;相当于xml中的标签
将方法的返回值添加到容器中;容器中这个组件默认的id就是方法名
ここに画像を挿入説明

7 配置文件占位符

1)配置文件中可以使用随机数
R A n個 D インクルード メートル V A リットル E {random.value}、 {random.int}、${random.long}
R A n個 D インクルード メートル n個 トン 10 {random.int(10)}、 {random.int[1024,65536]}

2) 属性配置占位符
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190620132848384.png
可以在配置文件中引用前面配置过的属性(优先级前面配置过的这里都能用)。
${app.name:默认值}来指定找不到属性时的默认值

ここに画像を挿入説明

8 Profile
Profile是Spring对不同环境提供不同配置功能的支持,可以通过激活、
指定参数等方式快速切换环境
1)多profile文件形式:
格式:application-{profile}.properties/yml:
application-dev.properties、application-prod.properties

2)yml多profile文档块模式:
ここに画像を挿入説明
3)激活方式:
命令行java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev可以直接在测试的时候,配置传入命令行参数
–spring.profiles.active=dev
配置文件 spring.profiles.active=dev
jvm参数 –Dspring.profiles.active=dev

9 配置文件加载位置

spring boot 启动会扫描以下位置的application.properties或者
application.yml文件作为Spring boot的默认配置文件
– file:./config/ 当前工程的config目录下
– file:./
– classpath:/config/ 类路径下的config目录下
– classpath:/
– 以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容。
SpringBoot会从这四个位置全部加载主配置文件;互补配置;
– 我们也可以通过配置spring.config.location来改变默认配置
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
不用改原来的配置,直接使用新配置有利于运维

10 外部配置加载顺序
Spring Boot 支持多种外部配置方式
这些方式优先级如下:(https://docs.spring.io/spring-boot/docs/current-
SNAPSHOT/reference/htmlsingle/#boot-features-external-config)
SpringBoot也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置
1).命令行参数
所有的配置都可以在命令行上进行指定
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc 多个配置用空格分开; --配置项=值
2.)来自java:comp/env的JNDI属性
3.)Java系统属性(System.getProperties())
4) 操作系统环境变量
5.)RandomValuePropertySource配置的random.*属性值

由jar包外向jar包内进行寻找;优先加载带profile;再来加载不带profile
6)パッケージジャー用途向け{プロファイル}の.propertiesまたはspring.profileとapplication.yml()プロファイル外
ジャー又は用途向け{プロファイル}内側7)application.yml(spring.profile持つ)プロファイルの.properties
8)ジャーまたはパッケージ外部application.yml(spring.profileなし)プロファイルapplication.properties
spring.profileせずapplication.ymlジャー又はapplication.properties内部9)()構成ファイル
10)@Configuration注釈クラス上の@PropertySource
デフォルトプロパティのSpringApplication.setDefaultPropertiesで指定された11)

おすすめ

転載: blog.csdn.net/m0_38143867/article/details/93055104