ホームページ  >  記事  >  Java  >  SpringBoot でカスタム プロパティ構成ファイルを読み取る方法

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

WBOY
WBOY転載
2023-05-13 22:43:112343ブラウズ

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 までご連絡ください。