安らかなAPIを使用するスプリングブートクライアントがあります。 REST APIのJavaクラスのIPアドレスをハードコーディングする代わりに、使用できるapplication.propertiesにキーエントリはありますか?
そうでない場合、カスタムエントリを作成できますか?
ありがとう
Spring Bootが使用するインフラストラクチャは、まったく同じ方法で独自のプロジェクトで使用できます。 @zmitrokの回答で、「不明なプロパティ」警告についてコメントしました。これは、プロパティにメタデータがないため、IDEはそれを認識しないためです。
Spring Bootが提供するもの(@Value
はSpring Frameworkの機能です)に比べてかなり制限されているため、可能であれば@Value
を使用することを強くお勧めしますnot。
IPのPOJOを作成することから始めます。
@ConfigurationProperties("app.foo")
public class FooProperties {
/**
* IP of foo service used to blah.
*/
private String ip = 127.0.0.1;
// getter & setter
}
次に、2つの選択肢があります
@Component
をFooProperties
に配置し、@EnableConfigurationProperties
クラスのいずれかに@Configuration
を追加して構成プロパティの処理を有効にします(この最後の手順は、Spring Boot 1.3.0.M3
の時点で不要です)FooProperties
をそのままにして、Spring Beanを自動的に作成する@Configuration
クラスのいずれかに@EnableConfigurationProperties(FooProperties.class)
を追加します。app.foo.ip
はapplication.properties
で使用でき、コードで@Autowired
FooProperties
を使用してプロパティの値を検索できます。
@Component
public MyRestClient {
private final FooProperties fooProperties;
@Autowired
public MyRestClient(FooProperties fooProperties) { ... }
public callFoo() {
String ip = this.fooProperties.getIp();
...
}
}
さて、IDEのキーはまだ黄色です。最後のステップは ビルド時にコードを見て関連するメタデータを生成する追加の依存関係を追加します です。以下をpom.xmlに追加します
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
そして、あなたのキーが認識され、javadocがあり、IDEはあなたにデフォルト値(フィールドで初期化した値)を与えます。サービスハンドル(つまりURL
)およびフィールドのjavadocを使用して、キーのドキュメントを生成します。
また、フィールドにJSR-303
制約検証を追加することもできます(たとえば、有効なIPであることを確認するための正規表現)。
詳細については、 このサンプルプロジェクト および ドキュメント を確認してください。
プロパティファイルにIPをハードコーディングする代わりに、次を使用してアプリケーションを開始できます。
-Dmy.property=127.127.10.20
そしてSpring Bootは自動的にそれを拾います
@Value("${my.property}")
private String myProperty;
Application.propertiesに独自のエントリを追加できます。プロパティ名が http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties にリストされている共通のプロパティと衝突しないようにしてください。 =