spring-bootで@ConfigurationPropertiesを使用


詳細
@ConfigurationProperties注記の役割は、プレフィックスに基づいてプロファイルの属性をPOJOエンティティクラスにマッピングできることです.属性名が一致すれば自動的に入力でき、使い勝手が非常に便利です.この点は@Configuration注記と混同されやすく、@Configurationも構成クラスを注記することができます.異なるのは、各プロパティにバインドされたフィールドを再宣言する必要があり、少し複雑なので@ConfigurationProperties注釈を使用することをお勧めします.
簡単な例を見てみましょう.プロファイルがあります.次のように、さまざまなデータ構造のプロパティが含まれています.


#Simple properties
[email protected]
mail.port=9000
[email protected]

#List properties
mail.recipients[0][email protected]
mail.recipients[1][email protected]

#Map Properties
mail.additionalHeaders.redelivery=true
mail.additionalHeaders.secure=true

#Object properties
mail.credentials.username=john
mail.credentials.password=password
mail.credentials.authMethod=SHA1


#List

mail.cs[0].username=cs1
mail.cs[0].password=cs1pwd
mail.cs[0].authMethod=SHA1


mail.cs[1].username=cs2
mail.cs[1].password=cs2pwd
mail.cs[1].authMethod=SHA2


#Map

mail.mp.k1.username=k1
mail.mp.k1.password=pwdk1
mail.mp.k1.authMethod=SHA3


mail.mp.k2.username=k2
mail.mp.k2.password=pwdk2
mail.mp.k2.authMethod=SHA3


@ConfigurationProperties注釈で構成クラスにマッピングできるようになりました.これにより、非常に便利になります.

@Configuration
@PropertySource("classpath:mail.properties")
@ConfigurationProperties(prefix = "mail")
public class ConfigProperties {


    public static class Credentials{

        private String authMethod;
        private String username;
        private String password;

        public String getAuthMethod() {
            return authMethod;
        }

        public void setAuthMethod(String authMethod) {
            this.authMethod = authMethod;
        }

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        @Override
        public String toString() {
            return "Credentials{" +
                    "authMethod='" + authMethod + '\'' +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    '}';
        }
    }


    private String host;
    private int port;
    private  String from;
    private  Credentials credentials;
    private List recipients;//   
    private Map additionalHeaders;
    private Map mp;
    private List  cs;
	
	//getter setter   
	
	}



このクラスの各プロパティは、構成内のプロパティに対応しています.フィールド名は同じでなければなりません.
成功したかどうかを検証するために、http://localhost:8777/testを介してcontrollerクラスを構築しました.
成功したかどうかを確認します.

==============      ================
[email protected]
[email protected]
9000
==============List[String]  ================
[[email protected], [email protected]]

==============Map[String,String]  ================
{secure=true, redelivery=true}

==============Object  ================
Credentials{authMethod='SHA1', username='john', password='password'}

==============List[Object]  ================
Credentials{authMethod='SHA1', username='cs1', password='cs1pwd'}
Credentials{authMethod='SHA2', username='cs2', password='cs2pwd'}

==============Map[String,Object]  ================
k2 Credentials{authMethod='SHA3', username='k2', password='pwdk2'}
k1 Credentials{authMethod='SHA3', username='k1', password='pwdk1'}
(     Set  ) 

注入に成功し、非常に簡潔に使用されており、springのようにxmlの山を通じてBeanに様々なデータ構造を注入しなければならず、コードを大幅に簡素化していることがわかります.
プロジェクトはgithubに共有されています.興味のある友达はstarができます.https://github.com/qindongliang/spring-boot-properties