SpringBoot でカスタム プロパティ構成ファイルを読み取る方法

WBOY
リリース: 2023-05-13 22:43:11
転載
2342 人が閲覧しました

1. リソースに新しい .properties ファイルを作成する

リソース ディレクトリに新しい config フォルダーを作成し、新しい .properties ファイルを作成してそのフォルダーに配置します。図に示すように、remote.properties

SpringBoot でカスタム プロパティ構成ファイルを読み取る方法

2. 設定ファイル

remote.uploadFilesUrl=/resource/files/
remote.uploadPicUrl=/resource/pic/
ログイン後にコピー

3を記述します。新しい構成クラスを作成します RemoteProperties.java

@Configuration
@ConfigurationProperties(prefix = "remote", ignoreUnknownFields = false)
@PropertySource("classpath:config/remote.properties")
@Data
@Component
public class RemoteProperties {
  private String uploadFilesUrl;
  private String uploadPicUrl;
}
ログイン後にコピー

where

@Configuration は、これが構成クラスであることを示します
@ConfigurationProperties(prefix = "remote",ignoreUnknownFields = false ) このアノテーションはバインディング プロパティとして使用されます。 prefix は、remote.properties ファイルの「remote」である属性の接頭辞を選択するために使用されます。ignoreUnknownFields は、宣言されたフィールドと一致しない属性がある場合に SpringBoot に例外をスローするように指示するために使用されます。
@PropertySource("classpath:config/remote.properties") 構成ファイルのパス
@Data これは、ゲッター&セッター メソッドの生成に使用されるロンボク アノテーションです。
@コンポーネントは Bean

として識別されます。 4. 使い方は?

構成ファイル メソッドを使用するクラス テーブルで EnableConfigurationProperties(RemoteProperties.class) にアノテーションを付けます。
そして自動的に挿入します。

@Autowired
RemoteProperties remoteProperties;
ログイン後にコピー

メソッド内で RemoteProperties.getUploadFilesUrl() を使用します。 ) 設定内容を取得します。

@EnableConfigurationProperties(RemoteProperties.class)
@RestController
public class TestService{
  @Autowired
  RemoteProperties remoteProperties;

  public void test(){
    String str = remoteProperties.getUploadFilesUrl();
    System.out.println(str);
  }
}
ログイン後にコピー

Str は、設定ファイルの「/resource/files/」です。

PS: Spring-boot で構成設定ファイルを読み取る 2 つの方法を見てみましょう

Spring-Boot テクノロジについて学んだ人は Spring について知っているはずです-Boot コア構成ファイル application.properties は、もちろん、アノテーションを使用して構成ファイル情報をカスタマイズすることもできます。

Spring-Boot による構成ファイルの読み取り方法:

1. コア構成ファイル情報の内容を読み取ります。 application.properties

コア構成ファイルこれは、リソース ルート ディレクトリにある application.properties または application.yml 構成ファイルを参照します。これら 2 つの構成ファイルを読み取るには 2 つの方法があり、どちらも比較的簡単です。

コア構成ファイル application.properties の内容は次のとおりです。

test.msg=Hello World SpringBoot
ログイン後にコピー

方法 1: @Value メソッドを使用する (一般的に使用されます)

package Solin.controller; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 
@RestController 
public class WebController { 
  @Value("${test.msg}") 
  private String msg; 
  @RequestMapping("/index1")  
  public String index1(){ 
    return "方式一:"+msg; 
  } 
}
ログイン後にコピー

注意: @Value の ${} には、コア構成ファイルのキー名が含まれます。 @RestController をコントローラー クラスに追加すると、ビュー メソッドに @ResponseBody を追加するのと同様に、このクラスのすべてのビューが JSON で表示されます。
http://localhost:8088/index1 にアクセスすると、「方法 1: Hello World SpringBoot」

方法 2: 環境メソッドを使用する

package Solin.controller; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.core.env.Environment; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RestController; 
@RestController 
public class WebController { 
  @Autowired 
  private Environment env; 
   
  @RequestMapping("/index2")  
  public String index2(){ 
    return "方式二:"+env.getProperty("test.msg"); 
  } 
}
ログイン後にコピー

注: このメソッドは依存関係注入 Evnironment によって完了します。作成したメンバー変数 private 環境 env に @Autowired アノテーションを追加して依存関係注入を完了し、env.getProperty("key name") を使用して対応する値を読み取ります。
http://localhost:8088/index2 にアクセスすると、「方法 2: Hello World SpringBoot」

2 が表示されます。カスタム構成ファイルの情報 (例: author) を読み取ります。プロパティ

コア ファイルの元のエコロジーを破壊しないようにするため、ただしカスタマイズされた構成情報も必要となるため、通常は、ここで作成されるこのカスタマイズされた情報を配置するためにカスタム構成ファイルが選択されます。設定ファイル author.properties

resources/author.properties の内容は次のとおりです:

author.name=Solin 
author.age=22
ログイン後にコピー

管理設定用のエンティティ クラスを作成します:

package Solin.controller; 
 
import org.springframework.boot.context.properties.ConfigurationProperties; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.stereotype.Component; 
 
//加上注释@Component,可以直接在其他地方使用@Autowired来创建其实例对象 
@Component 
@ConfigurationProperties(prefix = "author",locations = "classpath:author.properties")   
public class MyWebConfig{ 
  private String name; 
  private int age; 
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  } 
  public int getAge() { 
    return age; 
  } 
  public void setAge(int age) { 
    this.age = age; 
  } 
}
ログイン後にコピー

注:

@ConfigurationProperties アノテーションには 2 つのプロパティがあります:

locations: 構成ファイルの場所を指定します。
prefix:構成ファイル内のキー名のプレフィックス (私の構成ファイルでは、すべてのキー名が作成者で始まります。)

@Component を使用すると、クラスを他の場所で依存できるようになります。つまり、@Autowired を使用します。インスタンスを作成するためのアノテーション。

テスト コントローラーの作成

package Solin.controller; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 
@Controller  
public class ConfigController { 
  @Autowired 
  private MyWebConfig conf; 
   
  @RequestMapping("/test")  
  public @ResponseBody String test() { 
    return "Name:"+conf.getName()+"---"+"Age:"+conf.getAge();  
  } 
}
ログイン後にコピー

注: @Component アノテーションが Conf クラスに追加されるため、ここで @Autowired を直接使用してそのインスタンス オブジェクトを作成できます。

http://localhost:8088/test にアクセスすると、「Name:Solin---Age:22」と表示されました。

以上がSpringBoot でカスタム プロパティ構成ファイルを読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート