ホームページ >バックエンド開発 >PHPチュートリアル >Spring Bootフレームワークのナレッジポイントを詳しく解説
概要: 1. Spring Boot のプロパティ設定ファイル 1.1 Spring Boot のプロパティ設定ファイルの最初の形式では、次の 2 つのプロパティの意味は、アクセス ポートを 8081 に変更し、 contextPath は、アドレス バーにアドレスの追加レイヤーを追加するものとして理解できます。 server.port= ...
プロパティ設定ファイルの使い方次の 2 つの属性は、アクセス ポートを 8081 に変更し、contextPath を追加します。これは、アドレス バーに追加のアドレス層を追加するものとして理解できます。
server.port=8081 server.context-path=/joyou
デモアプリケーション.javaを右クリック - 「実行」 Spring Boot アプリ起動プログラム
効果は以下の通り まずポートが8081になりました
ブラウザアクセス効果は以下の通りです。 。
補足:
プロパティ ファイルは、構成プロパティを管理する最も一般的な方法です。 Spring Boot によって提供される SpringApplication クラスは、application.properties ファイルを検索してロードし、構成プロパティ値を取得します。 SpringApplication クラスは、次の場所でファイルを検索します:
1./config 現在のディレクトリのサブディレクトリ
2.現在のディレクトリ
3./configパッケージ内のクラスパス
4.クラスパス
上記のシーケンスは位置も示していますに含まれるプロパティ ファイルの優先順位。優先順位は高いものから低いものへと並べられます。
spring.config.name キーの構成属性を通じて、異なるプロパティ ファイル名を指定できます。 spring.config.location を通じて 追加のプロパティ ファイルの検索パス を追加することもできます。
yml 構成を使用して、リソース ディレクトリ application.yml ファイルに ap を作成します。コードは以下のように表示されます。
server: port: 8082 context-path: /joyou
效果与1.1相同。
补充:
相对于属性文件来说,YAML 是一个更好的配置文件格式。当有前缀的情况下,使用.yml格式的配置文件更简单。
注意:使用.yml时,属性名的值和冒号中间必须有空格,如name: SpringBoot正确,SpringBoot就是错的。
YAML は Ruby on Rails でうまく機能します。 YAML は JSON のスーパーセットであり、階層構成データを定義するための便利な形式です。基本的な文法規則は次のとおりです:
大文字と小文字を区別します
階層関係を示すためにインデントを使用します
インデントするときにタブキーは使用できません。スペースのみが使用できます。
同じレベルの要素が左揃えである限り、インデントされたスペースの数は関係ありません
# この文字から行末までがコメントになります。パーサーによって無視されます。
SpringBoot 公式 Web サイトのドキュメントには、詳細な構成と手順が記載されています。付録 A. 共通アプリケーション プロパティ: http://docs.spring.io/spring-boot/docs/current-snapshot/htmlsingle/#Common-proper Ties 完全に不完全な統計ですが、この完全なアプリケーション プロパティ ファイルには 1183 行があります。そのうち、属性キーは 950 個あります。このような巨大な構成を見たら、あなたは間違いなく衝撃を受けるでしょう。ただし、実際のプロジェクトでは、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)を使用できます。 コマンドライン引数の解析を無効にします。
在实际开发过程中,需要程序去配置文件中读取数据(如:URL,一些账号密码等),所以就需要我们来自定义属性,供程序读取。 首先在yml里自定一个属性,格式如下: 在Java程序中取值,代码如下: 使用浏览器访问效果如下
在JAVA程序中注入All属性 效果如图所示:
看了上面的例子后,会产生一个疑问,如果想一次调用10个、20个、50个属性值,难道我要在程序中注入50次值,使用50次注解吗? 为了解决这个疑问,Spring Boot 是这么解决的! 首先一个女孩,有身高、体重、罩杯等等属性,我们可以这样来写! 然后写一个类,这个类中提供Girl的属性,及Setter,Geter方法,需要使用两个注解: @Component //如果没有这个注解,会报找不到Bean的错 @ConfigurationProperties(prefix="Girl") //找到以Girl开头的属性 然后在java程序中注入Gril类 启动程序,刷新浏览器,效果如下:
それは違うかもしれませんが、開発に書かれている属性値はありますか?本番環境では環境を一つ一つ変更する必要があるのでしょうか?ここまで言ってきましたが、もちろんその必要はありません。開発中に 2 つの環境で属性値の要件が異なる 2 セットの yml ファイルを作成し、必要な yml ファイルを呼び出すことができます。 L 本番環境の GIRL の属性値は次のとおりです: 上記 2 つの画像ファイルの名前に注意してください) ブラウザに対応した結果 2番目の環境に対応した構成 ブラウザに対応した結果
Spring Boot によって提供される構成の優先順位シーケンスは比較的複雑です。優先度の高い順に、具体的なリスト(高いものから低いもの)は次のとおりです。
2. Spring Boot カスタム プロパティ
2.1、 第一个自定义属性的例子
company: joyouemployee: 二十岁以后
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;
}
}
company: joyouemployee: 二十岁以后
All: "公司: ${company} , 员工: ${employee}"
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;
}
}
2.3 对于多个属性如何一次调用
Girl:
High: 160CM Weight: 80KG CupSize: 30A
package com.example.demo;@RestControllerpublic class HelloSpringBoot { @Autowired
private Girl girl;
@RequestMapping(value="/hello" , method = RequestMethod.GET)
public String HelloSpring(){
return girl.toString();
}
}
3. マルチ環境属性の構成
3.1 本番および開発のさまざまなシナリオ
理解を助けるために、これまでのプロジェクトのディレクトリ構造の図を追加します
以上がSpring Bootフレームワークのナレッジポイントを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。