@ConfigurationProperties 주석은 yml 구성 파일 정보를 얻습니다.

주석 소개

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);
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_55127182/article/details/131744794
Recomendado
Clasificación