ホームページ  >  記事  >  バックエンド開発  >  Spring Bootフレームワークのナレッジポイントを詳しく解説

Spring Bootフレームワークのナレッジポイントを詳しく解説

巴扎黑
巴扎黑オリジナル
2017-08-16 09:37:324856ブラウズ


概要: 1. Spring Boot のプロパティ設定ファイル 1.1 Spring Boot のプロパティ設定ファイルの最初の形式では、次の 2 つのプロパティの意味は、アクセス ポートを 8081 に変更し、 contextPath は、アドレス バーにアドレスの追加レイヤーを追加するものとして理解できます。 server.port= ...

1. Spring Boot のプロパティ設定ファイル

1.1 Spring Boot のプロパティ設定ファイルの最初の形式

プロパティ設定ファイルの使い方次の 2 つの属性は、アクセス ポートを 8081 に変更し、contextPath を追加します。これは、アドレス バーに追加のアドレス層を追加するものとして理解できます。

server.port=8081
server.context-path=/joyou

デモアプリケーション.javaを右クリック - 「実行」 Spring Boot アプリ起動プログラム

Spring Bootフレームワークのナレッジポイントを詳しく解説

効果は以下の通り まずポートが8081になりました

Spring Bootフレームワークのナレッジポイントを詳しく解説

ブラウザアクセス効果は以下の通りです。 。

Spring Bootフレームワークのナレッジポイントを詳しく解説

補足:

プロパティ ファイルは、構成プロパティを管理する最も一般的な方法です。 Spring Boot によって提供される SpringApplication クラスは、application.properties ファイルを検索してロードし、構成プロパティ値を取得します。 SpringApplication クラスは、次の場所でファイルを検索します:

1./config 現在のディレクトリのサブディレクトリ

2.現在のディレクトリ

3./configパッケージ内のクラスパス

4.クラスパス

上記のシーケンスは位置も示していますに含まれるプロパティ ファイルの優先順位。優先順位は高いものから低いものへと並べられます。

spring.config.name キーの構成属性を通じて、異なるプロパティ ファイル名を指定できます。 spring.config.location を通じて 追加のプロパティ ファイルの検索パス を追加することもできます。

1.2 Spring Boot のプロパティ構成ファイルの 2 番目の形式 (推奨)

yml 構成を使用して、リソース ディレクトリ application.yml ファイルに ap を作成します。コードは以下のように表示されます。

server:  port: 8082  context-path: /joyou

                效果与1.1相同。

                  补充:                   

                相对于属性文件来说,YAML 是一个更好的配置文件格式。当有前缀的情况下,使用.yml格式的配置文件更简单。

注意:使用.yml时,属性名的值和冒号中间必须有空格,如name: SpringBoot正确,SpringBoot就是错的。

YAML は Ruby on Rails でうまく機能します。 YAML は JSON のスーパーセットであり、階層構成データを定義するための便利な形式です。基本的な文法規則は次のとおりです:

  • 大文字と小文字を区別します

  • 階層関係を示すためにインデントを使用します

  • インデントするときにタブキーは使用できません。スペースのみが使用できます。

  • 同じレベルの要素が左揃えである限り、インデントされたスペースの数は関係ありません

  • # この文字から行末までがコメントになります。パーサーによって無視されます。

1.3 application.properties 内のどのキーが構成可能ですか?

SpringBoot 公式 Web サイトのドキュメントには、詳細な構成と手順が記載されています。付録 A. 共通アプリケーション プロパティ: http://docs.spring.io/spring-boot/docs/current-snapshot/htmlsingle/#Common-proper Ties 完全に不完全な統計ですが、この完全なアプリケーション プロパティ ファイルには 1183 行があります。そのうち、属性キーは 950 個あります。このような巨大な構成を見たら、あなたは間違いなく衝撃を受けるでしょう。ただし、実際のプロジェクトでは、Spring Boot の規則に従えば、通常、あまり多くの構成を個別に指定する必要はありません。

Spring Boot は、このジレンマから抜け出すために、優先的に設定を読み取るメカニズムを提供します。

Spring Boot によって提供される構成の優先順位シーケンスは比較的複雑です。優先度の高い順に、具体的なリスト(高いものから低いもの)は次のとおりです。

1. コマンドラインパラメータ(最優先)。

  • 2. System.getProperties() を通じて取得される Java システム パラメーター。

  • 3. オペレーティング システムの環境変数。

  • 4. java:comp/env から取得される JNDI 属性。

  • 5. RandomValuePropertySource によって生成された Random.* プロパティ。

  • 6.jar パッケージ外の application-{profile}.properties または application.yml (spring.profile 付き) 構成ファイル (spring.config.location パラメーターで指定)

  • 社内アプリケーション- {profile}.properties または application.yml (spring.profile あり) 設定ファイル

  • 8. Jar パッケージの外部 application.properties または application.yml (spring.profile なし) 設定ファイル

  • 9. jar パッケージ内の application.properties または application.yml (spring.profile なし) 構成ファイル

  • 10. @ を介した @Configuration アノテーションが付けられた Java クラスを含むアプリケーション Java 構成クラスPropertySource アノテーション宣言のプロパティ ファイル。

  • 11. SpringApplication.setDefaultProperties を通じて宣言されたデフォルトのプロパティ。

Spring Boot が優先順位の高い場所に構成を見つけた場合、優先順位の低い構成は無視されます。以下では、これらの優先事項について簡単に説明します。 Spring Boot の設定の優先順位は複雑に見えますが、実際には非常に合理的です。コマンド ライン パラメーターの優先順位は最高に設定されています。これにより、アプリケーションを再パッケージ化してデプロイすることなく、テスト環境または運用環境で構成パラメーターの値を迅速に変更できるようになります。 P SpringApplication クラスは、デフォルトで、「-」の先頭にある 構成パラメーター をアプリケーションで使用できるように変換します。たとえば、「--name = Alex」は構成パラメーター「name」を設定します。値は「アレックス」です。

この関数が必要ない場合は、SpringApplication.setAddCommandLineProperties(false)を使用できます。

コマンドライン引数の解析を無効にします。

2. Spring Boot カスタム プロパティ

                2.1、 第一个自定义属性的例子  

                          在实际开发过程中,需要程序去配置文件中读取数据(如:URL,一些账号密码等),所以就需要我们来自定义属性,供程序读取。

                        首先在yml里自定一个属性,格式如下:

company: joyouemployee: 二十岁以后

                        在Java程序中取值,代码如下:

package com.example.demo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloSpringBoot {	
	@Value("${company}")
	private String company;	
	@Value("${employee}")
	private String employee;	

	@RequestMapping(value="/hello" , method = RequestMethod.GET)
	public String HelloSpring(){		
			return company+"====="+employee;
	}
}

                使用浏览器访问效果如下

Spring Bootフレームワークのナレッジポイントを詳しく解説

company: joyouemployee: 二十岁以后   
All: "公司: ${company} , 员工: ${employee}"

                    在JAVA程序中注入All属性

package com.example.demo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloSpringBoot {	
	@Value("${All}")	private String All;	
	
	@RequestMapping(value="/hello" , method = RequestMethod.GET)	public String HelloSpring(){		
			return All;
	}
}

            效果如图所示:

Spring Bootフレームワークのナレッジポイントを詳しく解説

            2.3 对于多个属性如何一次调用

                    看了上面的例子后,会产生一个疑问,如果想一次调用10个、20个、50个属性值,难道我要在程序中注入50次值,使用50次注解吗? 为了解决这个疑问,Spring Boot 是这么解决的!

                    首先一个女孩,有身高、体重、罩杯等等属性,我们可以这样来写!

Girl: 
   High: 160CM   Weight: 80KG   CupSize: 30A

                    然后写一个类,这个类中提供Girl的属性,及Setter,Geter方法,需要使用两个注解:

  •                     @Component //如果没有这个注解,会报找不到Bean的错

  •                     @ConfigurationProperties(prefix="Girl") //找到以Girl开头的属性

Spring Bootフレームワークのナレッジポイントを詳しく解説 

                    然后在java程序中注入Gril类

package com.example.demo;@RestControllerpublic class HelloSpringBoot {	@Autowired
	private Girl girl;	
	
	@RequestMapping(value="/hello" , method = RequestMethod.GET)
	public String HelloSpring(){		
			return girl.toString();
	}
}

                启动程序,刷新浏览器,效果如下:

Spring Bootフレームワークのナレッジポイントを詳しく解説

3. マルチ環境属性の構成

3.1 本番および開発のさまざまなシナリオ

それは違うかもしれませんが、開発に書かれている属性値はありますか?本番環境では環境を一つ一つ変更する必要があるのでしょうか?ここまで言ってきましたが、もちろんその必要はありません。開発中に 2 つの環境で属性値の要件が異なる 2 セットの yml ファイルを作成し、必要な yml ファイルを呼び出すことができます。 L 本番環境の GIRL の属性値は次のとおりです:

Spring Bootフレームワークのナレッジポイントを詳しく解説

開発環境の GIRL の属性値は次のとおりです:

Spring Bootフレームワークのナレッジポイントを詳しく解説

application.yml で別のファイルを呼び出すだけです。開発環境と本番環境の異なる yml ファイルの名前 (

上記 2 つの画像ファイルの名前に注意してください)

Spring Bootフレームワークのナレッジポイントを詳しく解説

ブラウザに対応した結果

Spring Bootフレームワークのナレッジポイントを詳しく解説

2番目の環境に対応した構成

Spring Bootフレームワークのナレッジポイントを詳しく解説

ブラウザに対応した結果

Spring Bootフレームワークのナレッジポイントを詳しく解説

理解を助けるために、これまでのプロジェクトのディレクトリ構造の図を追加します

Spring Bootフレームワークのナレッジポイントを詳しく解説

以上がSpring Bootフレームワークのナレッジポイントを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。