春にプロパティを理解していない開発者は、主に多くの構成方法と多くの使用方法があるため、少し混乱していると感じるかもしれません。
この記事は、原則分析やソースコード分析の記事ではありませんが、読者が春のプロパティをよりよく理解して使用するのに役立つことを願っています。
プロパティの使用
この記事のすべての読者は春を使用しています。まず、プロパティの使用方法を見てみましょう。春には一般的に使用されるいくつかの方法があります。
1. XML構成ファイルで使用します
つまり、$ {}の値は自動的に置き換えられます。
<bean id = "xxx"> <プロパティ名= "url" value = "$ {javadoop.jdbc.url}" /> < /bean>2。@valueインジェクションを介して使用します
@value( "$ {javadoop.jdbc.url}")private string url;3。環境を通じて取得します
この方法には注意を払うべきことがいくつかあります。すべての構成方法が、環境インターフェイスを介してプロパティ値の取得をサポートするわけではありません。個人テストは、Annotation @PropertySourceを使用する場合にのみ使用できます。そうしないと、NULLが表示されます。それを構成する方法については、すぐにそれについてお話します。
@autowiredprivate環境env; public string geturl(){return env.getProperty( "javadoop.jdbc.url");}Spring Boot application.Propertiesに登録されている場合は、問題ありません。
プロパティ構成
前に設定したプロパティの使用方法について言及したので、それらを構成する方法は? Springは多くの構成方法を提供します。
1。XML経由で構成します
以下は最も一般的に使用される構成方法であり、多くのプロジェクトが次のように書かれています。
<コンテキスト:プロパティプレイスホルダーlocation = "classpath:sys.properties" />
2。@propertysource経由で構成します
以前のXML構成は非常に一般的ですが、すべてのXML構成ファイルを排除する衝動もある場合は、次の方法を使用する必要があります。
@propertysource( "classpath:sys.properties")@configurationpublic class javadoopconfig {}@PropertySourceは@Configurationで使用する必要があるため、詳細は説明しません。
3。PropertyPlaceHolderConFigurer
読者がこれを見たなら、彼らが驚いているかどうかは関係ありません。これは、春3.1の前に使用された方法です。
<bean> <プロパティ名= "locations"> <list> <value> classpath:sys.properties </value> </list> </property name = "IngroreUnResolvable PlaceHolders" value = "true"/> <! - ここで構成できます - > </bean>
もちろん、対応するJava構成バージョンを使用することもできます。
@BeanPublic PropertyPlaceHolderConFigurer Propertiess(){PropertyPlaceHolderConFigurer PPC = new PropertyPlaceHolderConFigurer(); resource [] resource = new ClassPathResource [] {new ClassPathResource( "Sys.Properties")}; ppc.setlocations(リソース); ppc.setignoreUnResolvable PlaceHolders(true); ppcを返します;}4。propertySourcesplaceholderconfigurer
Spring 3.1が発売されると、PropertySourcesplaceholderconfigurerが導入されました。これは新しいクラスです。以前のPropertyPlaceHolderConfigurerの名前に追加のソースがあり、それが属するパッケージは異なることに注意してください。 Spring-Contextパッケージにあります。
構成に違いはありません。
<bean> <プロパティ名= "locations"> <list> <value> classpath:sys.properties </value> </list> </property name = "IngroreUnResolvable PlaceHolders" value = "true"/> <! - ここで構成できます - > </bean>
また、Java構成バージョンを持ってみましょう。
@BeanPublic PropertySourcesPlaceHolderConFigurer Properties(){propertySourcesPlaceHolderConFigurer PSPC = new PropertySourcesPlaceHolderConFigurer(); resource [] resource = new ClassPathResource [] {new ClassPathResource( "Sys.Properties")}; pspc.setlocations(リソース); pspc.setignoreUnResolvablePlaceHolders(true); pspcを返します;}スプリングブート関連
Spring Bootは本当に良いことであり、箱から出して使用するのはとても気持ちがいいです。関連するコンテンツの簡単な紹介です。
スプリングブートプロジェクトをすばやく生成:https://start.spring.io/
Application.Properties
各プロジェクトには、デフォルトでapplication.propertiesファイルがあります。この構成ファイルは、前述のように登録する必要はありません。 Spring Bootは、自動的に登録するのに役立ちます。
もちろん、名前を変更することができます。開始時にファイル名を指定するだけです。
Java -dspring.config.location = classpath:sys.properties -jar app.jar
application- {env} .properties
さまざまな環境に異なる構成を指定するために、これを使用します。
たとえば、テスト環境と生産環境のデータベース接続情報は異なります。
したがって、Application.Propertiesに基づいて、環境関連情報を構成するために新しいApplication-dev.PropertiesとApplication-propertiesを作成し、開始時に環境を指定する必要があります。
Java -dspring.profiles.active = prd -jar app.jar
その結果、Application.PropertiesとApplication-prd.Propertiesファイルの両方の構成が登録されます。キーが重複している場合、アプリケーション-prd.propertiesファイルの優先順位が高くなります。
@configurationProperties
この注釈は、Spring Bootでのみ利用できます。
この注釈を使用していなくても、オープンソースプロジェクトでこれを見ることができます。簡単な紹介です。
より直感的になるために例を見てみましょう。前述のように、構成ファイルに次の情報を入力して、Application.Propertiesに書き込むか、最初のセクションで紹介したメソッドを使用できます。
javadoop.database.url = jdbc:mysql:javadoop.database.username = adminjavadoop.database.password = admin123456
Javaファイル:
@configuration@configurationproperties(prefix = "javadoop.database")public class database {string url;文字列ユーザー名;文字列パスワード; //ゲッターとセッター}このようにして、タイプデータベースの豆がスプリングコンテナに自動的に登録され、プロパティが設定されます。
起動中に属性値を動的に変更します
これにはあまりにも多くの紹介が必要だとは思わないので、Spring Bootを使用している人は基本的にそれを知っておくべきです。
属性構成にはオーバーライド順序があります。つまり、同じキーが表示されると、値が勝ちます。
起動パラメーター> Application- {env} .Properties> Application.Properties
パラメーターを動的に設定するパラメーターを開始します。
Java -djavadoop.database.password = admin4321 -jar app.jar
さらに、システム環境変数を使用してプロパティを設定したり、乱数などを指定したりすることもできます。これは非常に柔軟ですが、役に立たないため、紹介しません。
要約します
読者がSpringプロパティをより深く理解したい場合、Spring環境インターフェイスに関連するソースコードを理解する必要があります。興味のある読者は、ソースコードを検索することをお勧めします。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。