@ConfigurationProperties の使用方法


注釈の概要

ConfigurationProperties アノテーションは主に、外部構成ファイルによって構成された属性をこの ** Spring Bean实例** に埋めるために使用されます。

注: 単独で使用することは無効であり、他のアノテーションと組み合わせて使用​​する必要があります。また、Spring Beanに対してのみ有効となり、通常の新規オブジェクトには有効になりません。

ConfigurationProperties の使用方法:

  1. @ConfigurationProperties + @Component (または Bean をインスタンス化するための他のアノテーション) は、Bean 定義クラスにアノテーションが付けられます
  2. @ConfigurationProperties + @Bean は構成クラスの Bean 定義メソッドにアノテーションが付けられます
  3. @ConfigurationProperties は共通クラスにアノテーションが付けられ、@EnableConfigurationProperties によって Bean として定義されます。

使い方

設定ファイル:

sftp:
  host: 127.0.0.1
  port: 22
  username: admin
  password: 123456

1. @ConfigurationProperties + @Component

@ConfigurationProperties + @Component (または Bean をインスタンス化するための他のアノテーション) は、Bean 定義クラスにアノテーションが付けられます

@Data
@Component
// @Configuration
@ConfigurationProperties(prefix = "sftp")
public class Sftp {
    
    

    private String host;

    private String port;

    private String username;

    private String password;
}

2. @ConfigurationProperties + @Bean

@ConfigurationProperties + @Bean は構成クラスの Bean 定義メソッドにアノテーションが付けられます

@Data
public class Sftp {
    
    

    private String host;

    private String port;

    private String username;

    private String password;
}
@Configuration
public class BeanConfig {
    
    

    @Bean
    @ConfigurationProperties(prefix = "sftp")
    public Sftp sftp() {
    
    
        return new Sftp();
    }
}

この使用法で発生した落とし穴:
コードが次のように変更された場合に @ConfigurationProperties を再利用する:

@Data
@ConfigurationProperties(prefix = "sftp")
public class Sftp {
    
    

    private String host;

    private String port;

    private String username;

    private String password;
}
@Configuration
public class BeanConfig {
    
    

    @Bean
    @ConfigurationProperties(prefix = "aaaa")
    public Sftp sftp() {
    
    
        return new Sftp();
    }
}

このように、@ConfigurationProperties アノテーションがあり、クラスに @ConfigurationProperties アノテーションがあり、メソッドの @ConfigurationProperties のみが有効になります(クラスのアノテーション メソッドを書き換えると理解できます)。

3. @ConfigurationProperties + @EnableConfigurationProperties

@ConfigurationProperties は共通クラスにアノテーションが付けられ、@EnableConfigurationProperties によって Bean として定義されます。

@Data
@ConfigurationProperties(prefix = "sftp")
public class Sftp {
    
    

    private String host;

    private String port;

    private String username;

    private String password;
}
@SpringBootApplication
@EnableConfigurationProperties(value = {
    
    Sftp.class})
public class SpringbootApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(SpringbootApplication.class, args);
    }
}

おすすめ

転載: blog.csdn.net/JokerLJG/article/details/127920496