設定ファイルは非常に重要で、プロジェクト全体の重要なデータはすべて設定ファイルに設定されます。例:
データベース接続情報 (ユーザー名とパスワードの設定);
プロジェクト起動用のポート;
サードパーティ システム コールの秘密キー情報;
問題を検出して特定できる通常のログと異常なログ (ログのレベルと永続性);
構成ファイルがない場合、この情報を構成できません。データベースに接続できません。ログを表示できません。これらの問題は Spring Boot プロジェクトにとって非常に重要であるため、構成ファイルは特に重要です。
設定ファイルの分類は一般的に次のとおりです:
システム設定ファイル (システムによって定義される)。接続文字列、ログ関連の設定;
ユーザー定義;
Spring Boot 構成ファイルには主に 2 つの形式があります:
.properties
.yml
以上です 2 つの形式があります, そして、ここではこのように書かなければなりません、そうしないとエラーが報告されます(規約は設定よりも重要です) どちらでも、関連する設定ファイルを設定できます. 2つの形式は単に異なる時代の産物です. の書き方他の 2 つの形式も異なります。以下に関連する説明があります。さらに、これら 2 つの形式は共存することもできます。両方が設定されている場合、ここでの設定はプロパティの設定を使用し、yml の設定を無視します。同じプロジェクトで両方の形式を同時に使用することはお勧めしません。
プロパティ設定ファイルは、以前の設定ファイル形式であり、Spring Boot プロジェクトのデフォルト設定ファイルでもあります。プロパティ設定ファイル:
プロパティでは、
と同様に、主にキーと値のペア (key=value) が使用されます。
形式 (途中にスペースを入れたり、余分なスペースを入れたりしないでください)
カスタム設定ファイルの場合は、key=value の形式でもあり、これはあなたがこれを読みたい場合は、ファイルは値を取得するために独自に定義されたキー値のみを使用できます。
この問題は、アノテーションを使用することでも解決できます。ここでは、@Value アノテーションと ${} の形式を使用して、次の内容を読み取ることができます:
@Controller public class Test { @Value("${server.port}") //读取配置项 private String port; @ResponseBody //返回一个非静态页面的数据 @RequestMapping("/func") //设置路由地址 public String func(){ return "port: " + port; } }
次に、ページ内で http://localhost:8080/func を検索して、読み取られたポート番号が確認されているかどうかを確認します。
使用する @Value は If のみです。 1 つの設定ファイルを読み取ることができますが、複数の設定ファイルを読み取りたい場合は、さらにいくつかの @Value タグを記述する必要があります
プロパティでは、キーは =value 形式で使用されます、同じキーの下の値である場合、キーの値を繰り返し書き込む必要があり、これは非常に冗長です
ので、それを解決したいこの問題は、次の使用を必要としますyml 設定ファイルの説明
yml は設定ファイルの別の形式です。yml は可読性が高く、理解しやすいです。データのシリアル化の形式を表現するために使用されます。 yml の構文は高級言語に非常に似ており、yml の最大の利点は、言語を超えて使用できることです。たとえば、Python や golang では、yml を設定ファイルとして使用できます。以下は、yml 設定ファイルの詳細な紹介です:
yml の基本構文は次のとおりです: key: value. 英語のコロンとスペースは、キーと値の間は必須であり、スペースは省略できません。上記の接続データベース構成を
##: のような構文で記述するとはるかに便利です。 追加: yml 内の単一引用符と二重引用符に関する問題: yml で二重引用符が使用されている場合、二重引用符は (元の) セマンティクスに従って実行されます。 \n -> \n などの特殊文字をエスケープ(エスケープ)処理します。 2. 設定ファイルの読み取り yml 設定ファイルの読み取り方法もプロパティと同様で、すべて @Value アノテーションに ${} を加えた形式を使用します。ここでは説明しませんが、yml の違いを見てみましょう。在yml里面还是可以配置对象的:
另外也可以使用行内写法:
而想要读取到这个对象的话就不能再使用@Value注解了,这里需要借助@ConfigurationProperties来读取:
import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Data @ConfigurationProperties(prefix = "student") //读取配置文件的对象 @Component public class Student { private int id; private String name; private int age; }
然后读取对象,就可以直接进行注入了:
@Controller public class Test { @Autowired private Student student; @ResponseBody @RequestMapping("/getstudent") public String getStudent(){ return "student: " + student; } }
然后通过浏览器搜索http://localhost:8080/getstudent就可以得到对象内容了:
在yml里面也是可以配置集合的:
同样行内写法也是可以的:
而要获取到集合的话,和获取对象是差不多的,也是通过@ConfigurationProperties来获取:
import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; @Data @ConfigurationProperties(prefix = "dbtypes") @Component public class ListConfig { private List<String> name; }
读取集合:
@Controller public class Test { @Autowired private ListConfig listConfig; @ResponseBody @RequestMapping("/getlist") public String getList(){ return "name:" + listConfig.getName(); } }
然后通过浏览器搜索http://localhost:8080/getlist就可以得到对象内容了:
properties是以key=value的形式配置的键值对类型配置文件,而yml是以key: value的形式配置的键值对类型配置文件;
properties是早期且系统默认的配置文件格式,但配置存在一定的冗余数据,而yml可以更好的解决数据冗余问题;
yml通用性更好,支持多语言;
yml支持更多的数据类型;
以上がSpring Boot設定ファイルの機能と詳細は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。