ホームページ >Java >&#&チュートリアル >SpringBoot で @ConfigurationProperties を使用する方法
依存関係の追加
最初に Spring Boot の依存関係を追加する必要があります:
簡単な例
@ConfigurationProperties は @Configuration と組み合わせて使用する必要があります。通常は POJO で構成します:
@Data@Configuration@ConfigurationProperties(prefix = "mail")public クラスConfigProperties { private String hostName; private int port; private String from;}
上記の例では、プロパティ ファイル内の mail で始まるすべてのプロパティを読み取り、Bean 内のフィールドと照合します。
#単純なプロパティmail.hostname=host@mail.commail.port=9000mail.from=mailer@mail.com
Spring のプロパティ名のマッチングでは、多くの形式がサポートされています。以下に示すように、すべての形式が hostName と一致します。一致:
mail.hostNamemail.hostnamemail.host_namemail.host-namemail.HOST_NAME
@Configuration を使用したくない場合は、@ 内の構成ファイルを手動でインポートする必要があります。次のように EnableConfigurationProperties アノテーションを追加します:
@SpringBootApplication@EnableConfigurationProperties(ConfigProperties.class)public class ConfigPropApp { public static void main(String[] args) { SpringApplication.run(ConfigPropApp.class,args); }}
@ConfigurationPropertiesScan で構成ファイルのパスを指定することもできます:
@SpringBootApplication@ConfigurationPropertiesScan("com.flydean.config") public class ConfigPropApp { public static void main(String[] args) ) { SpringApplication.run(ConfigPropApp.class,args); }}
この場合、プログラムは com.flydean.config パッケージ内の構成ファイルのみを検索します。
属性のネスト
クラス、リスト、マップをネストできます。例を挙げて、最初に通常の POJO を作成しましょう:
@Datapublic class Credentials { private String authMethod; private String ユーザー名; private String パスワード;}
次に、ネストされた構成ファイルを作成します:
@Data@Configuration@ConfigurationProperties(prefix = "nestmail ") public class NestConfigProperties { private String host; private int port; private String from; private List
対応するプロパティ ファイルは次のとおりです。
# ネストの単純なプロパティnestmail.hostname=mailer@mail.comnestmail.port=9000nestmail.from=mailer@mail.com#List プロパティnestmail.defaultRecipients[0]=admin@mail.comnestmail.defaultRecipients[1] =owner@mail .com#Map Propertiesnestmail.AdditionalHeaders.redelivery=trueenestmail.AdditionalHeaders.secure=true#Objectpropertiesnestmail.credentials.username=johnnestmail.credentials.password=passwordnestmail.credentials.authMethod=SHA1 #@ConfigurationProperties および@Bean@ConfigurationProperties は、次のように @Bean とともに使用することもできます:
@Datapublic class item { private String name; private int size;}
参照使用方法:
@Data@Configurationpublic class BeanConfigProperties { @Bean @ConfigurationProperties(prefix = "item") public item item() { return new item(); }}
Property Validation@ConfigurationProperties では、プロパティ検証に標準の JSR-303 形式を使用できます。例を見てみましょう:
@Data@Validated@Configuration@ConfigurationProperties(prefix = "mail")public class ConfigProperties { @NotEmpty private String hostName; @Min(1025) @Max(65536) private int port; @Pattern(regexp = "^[a-z0-9._% -] @[a-z0-9.-] \\.[a-z]{2,6}$") プライベート文字列 from;}
プロパティが異議申し立ての条件を満たしていない場合、次の例外が発生する可能性があります:
ターゲットへのバインド org.springframework.boot.context.properties.bind.BindException: 'mail' の下のプロパティのバインドに失敗しましたcom .flydean.config.ConfigProperties$$EnhancerBySpringCGLIB$$f0f87cb9 への失敗: プロパティ: mail.port 値: 0 理由: 最小値は 1025 未満にすることはできません プロパティ: mail.hostName 値: null 理由: 空にすることはできません アクション: 更新アプリケーションの設定プロセスは終了コード 1
で終了しました属性変換@ConfigurationProperties は複数の属性変換もサポートしています。以下では、Duration と DataSize を例として取り上げます:
2 つの Duration フィールドを定義します:
@ConfigurationProperties(prefix = "conversion")public class PropertyConversion { private Duration timeInDefaultUnit; private Duration timeInNano; ...}
これら 2 つのフィールドをプロパティファイル:
conversion.timeInDefaultUnit=10conversion.timeInNano=9ns
上記の属性には単位を指定できることがわかります。オプションの単位は、ns、us、ms、s、m、h、d で、それぞれナノ秒、マイクロ秒、ミリ秒、秒、分、時間、日に対応します。デフォルトの単位はミリ秒です。アノテーションで単位を指定することもできます:
@DurationUnit(ChronoUnit.DAYS)private Duration timeInDays;
対応する構成ファイルは次のとおりです:
conversion.timeInDays =2
DataSize の使用方法を見てみましょう:
private DataSize sizeInDefaultUnit; private DataSize sizeInGB; @DataSizeUnit(DataUnit.TERABYTES)private DataSize sizeInTB;
Correspondingプロパティ ファイル:
conversion.sizeInDefaultUnit=300conversion.sizeInGB=2GBconversion.sizeInTB=4
Datasize は B、KB、MB、GB、TB をサポートします。
カスタム コンバータ
同じ Spring Boot はカスタム属性コンバータもサポートしています。まず POJO クラスを定義しましょう:
public class Employee { private String name; private double給与;}
対応するプロパティ ファイル:
conversion.employee=john,2000
Converter インターフェイスの変換クラスを自分で実装する必要があります:
@Component@ConfigurationPropertiesBindingpublic class EmployeeConverterimplements Converter
以上がSpringBoot で @ConfigurationProperties を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。