ホームページ  >  記事  >  Java  >  SpringBoot2 の基礎となるアノテーション @ConfigurationProperties がバインディングを構成する方法

SpringBoot2 の基礎となるアノテーション @ConfigurationProperties がバインディングを構成する方法

WBOY
WBOY転載
2023-05-12 08:22:05977ブラウズ

通常、頻繁に変更されるものを構成ファイルに入れます。

たとえば、構成ファイル application.properties に以前に記述されたポート番号 server.port=8080 や、その他の一般的なものにはデータベース接続情報などが含まれます。

その後、データベース接続情報は構成ファイルに配置されます。これを使用したい場合は、構成ファイルを解析し、解析されたコンテンツを Bean で使用する必要があります。

シナリオ全体は、実際には 構成ファイル内のすべての構成を Java Bean にバインドすることです。

このシナリオを完了するには、Java ネイティブ コードに基づいて記述するのはまだ少し面倒です。通常、カプセル化は、プロパティ ファイルの内容を読み取り、それを JavaBean にカプセル化するために行われます。

public class getProperties {     public static void main(String[] args) throws FileNotFoundException, IOException {         Properties pps = new Properties();         pps.load(new FileInputStream("a.properties"));         Enumeration enum1 = pps.propertyNames();//得到配置文件的名字         while(enum1.hasMoreElements()) {             String strKey = (String) enum1.nextElement();             String strValue = pps.getProperty(strKey);             System.out.println(strKey + "=" + strValue);             //封装到JavaBean             ... ...         }     }

ここでは、Properties クラスを使用して構成ファイル a をロードします。 .properties, and then traverse each k-v in theconfiguration file. これを取得したら、対応する場所で使用できます。

このプロセスは、構成バインディングである springboot で簡素化されています。

構成バインディング

構成バインディングは、アノテーション @ConfigurationProperties を使用して完了します。これは、@Component と組み合わせて使用​​する必要があることに注意してください。

ブランドと価格の 2 つのプロパティを持つ新しいコンポーネント Car を作成します:

@Componentpublic class Car {    private String brand;    private Integer price;// get set tostring 就不贴了

構成ファイル application.properties で、いくつかのプロパティを設定します。値の例:

mycar.brand=QQmycar.price=9999

Use @ConfigurationProperties 注釈をコンポーネントに追加します:

@Component@ConfigurationProperties(prefix = "mycar")public class Car {    private String brand;    private Integer price;... ...

渡されるプレフィックスは、構成ファイル内のプレフィックスです。ここでは、私の車。

検証

バインドが成功したかどうかをテストしましょう。前の手順でコントローラー メソッドを追加し続けます。HelloController:

@RestControllerpublic class HelloController {    @Autowired    Car car;    @RequestMapping("/car")    public Car car() {        return car;    }    @RequestMapping("/hello")    public String Hello() {        return "Hello SpringBoot2 你好";    }}

アプリケーションをデプロイします。ブラウザは http://localhost:8080/car:

SpringBoot2 の基礎となるアノテーション @ConfigurationProperties がバインディングを構成する方法

にアクセスし、バインドは成功します。

別の方法

上記の方法に加えて、@EnableConfigurationProperties @ConfigurationProperties を使用してバインドを完了することもできます。

プロパティ構成を有効にする機能を示すには、構成クラスで @EnableConfigurationProperties アノテーションを使用する必要があることに注意してください:

//@ConditionalOnBean(name = "pet1")@Import({User.class, DBHelper.class})@Configuration(proxyBeanMethods = true)@ImportResource("classpath:beans.xml")  //配置文件的类路径@EnableConfigurationProperties(Car.class) //开启属性配置的功能public class MyConfig {    @Bean("user1")    public User user01(){        User pingguo = new User("pingguo",20);        pingguo.setPet(tomcatPet());        return pingguo;    }    @Bean("pet22")    public Pet tomcatPet(){        return new Pet("tomcat");    }}

@EnableConfigurationProperties(Car.class )クラスに渡して構成を有効にします。これにより、Car がコンテナに自動的に登録されます。これは、以前の Car の @Component が不要になることを意味します。

//@Component@ConfigurationProperties(prefix = "mycar")public class Car {    private String brand;    private Integer price;

再デプロイして次のアドレスにアクセスすると、引き続き機能します。

SpringBoot2 の基礎となるアノテーション @ConfigurationProperties がバインディングを構成する方法

2 番目の使用シナリオに関しては、たとえば、ここでの Car はサードパーティ パッケージのクラスですが、ソース コードには @Component がありません。 アノテーション. であれば、このようにバインドできます。

最後に、@ConfigurationProperties(prefix = "mycar") を使用する場合、この構成は Springboot コア構成ファイル application.properties ファイルにバインドされることを覚えておいてください。内容によって確立されます。

以上がSpringBoot2 の基礎となるアノテーション @ConfigurationProperties がバインディングを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。