用途は何ですか
効果は、同様のノートである@Value
割当てがコンポーネントのプロパティです。
使い方
最初はそれらを繰り返さない、springbootプロジェクトを確立することです。
まず、作成しPerson
たクラスとDog
クラスを。
package com.helius.springboot.bean;
@Component //加上它,即成为ioc容器中的一个组件
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
// 省略了setter、getter、toString()等
}
さんはSpringBootメイン設定ファイルapplication.propertiesを見てみましょう
person.last-name=张三
person.age=18
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=perter
person.dog.age=15
springbootでテストテストクラス
/**
* SpringBoot单元测试;
*
* 可以在测试期间很方便的类似编码一样进行自动注入等容器的功能
*
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot02ConfigApplicationTests {
@Autowired
Person person;
@Test
public void contextLoads() {
System.out.println(person);
}
}
あなたのコンソール印刷結果:
Person{lastName='张三', age=18, boss=false, birth=Fri Dec 15 00:00:00 CST 2017, maps={k1=v1, k2=14}, lists=[a, b, c], dog=Dog{name='perter', age=15}}
私たちは、容器アセンブリ者がすべて割り当てられていることがわかりました。
説明
我々は、使用しているので@ConfigurationProperties(prefix = "person")
、このコメントを
設定ファイルの各属性値をコンポーネントにマッピングされ
==プロファイル以下のすべてが1つのマッピング属性れる:;:== @ ConfigurationProperties接頭辞=「人」に対応する設定バインドのため、このクラスのすべての属性と設定ファイルSpringBootに知らせます
関連の注意事項
以前のブログ記事では:春と@PropertySource @value属性を割り当てるために使用 @valueノートを説明し、
これは、コンポーネントの外形の値に注入することができます。
中springbootでのそれは、直接@valueコメントを使用することができ、インポートする必要はありませんメインの設定ファイルapplication.propertiesをもspringboot上の場所を合意し、結局、メインの設定ファイルです、。
@valueと@ConfigurationPropertiesコンポーネントを割り当てることができるので、その違いは、それが作るのですか?
@ConfigurationProperties | @値 | |
---|---|---|
機能 | バッチ注入フィギュレーションファイルの属性 | 指定の |
ルース文法 | サポート | サポートしていません。 |
ゲーム | サポートしていません。 | サポート |
JSR303のデータチェック | サポート | サポートしていません。 |
複合型パッケージ | サポート | サポートしていません。 |
- ルース構文:あなたは私たちが使用する設定ファイルを見つけることができますが
person.last-name
、PersonクラスのlastNameのプロパティに割り当てることができます。
実際には、あなたと呼ばれる、最後の名または氏名のlast_nameを使用するか、対応する属性の割り当てをPseronすることができるようになります松散绑定
- @valueサポートのSpeIこれは、以前の記事で見ることができますが、@ConfigurationPropertiesがサポートされていません。
- 私たちは、中springmvcに@Validatedにこのコメントを使用しました。@ConfigurationPropertiesでも最後の平面上の例を使用して、サポート
- 最後に、@の値は、民間の地図<文字列、オブジェクト>複合型にマップとして、割り当てることができません。プロパティは、あなたがプロパティを追加することはできません
@Vavlueは($ {person.map})の値を取得することはできません。
アプリケーション例@Validated
ルックPersonクラスを変換します。
package com.helius.springboot.bean;
@Component //加上它,即成为ioc容器中的一个组件
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
@Email
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
// 省略了setter、getter、toString()等
}
これは、メッセージの形式でなければなりませんlastNameの割り当てをチェックする時間です
再実行試験方法
Field error in object 'person' on field 'lastName': rejected value [张三]; codes [Email.person.lastName,Email.lastName,Email.java.lang.String,Email]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [person.lastName,lastName]; arguments []; default message [lastName],[Ljavax.validation.constraints.Pattern$Flag;@702ed190,org.springframework.validation.beanvalidation.SpringValidatorAdapter$ResolvableAttribute@173b9122]; default message [不是一个合法的电子邮件地址]