주석 소개
ConfigurationProperties 주석은 주로 외부 구성 파일에서 구성된 속성을 ****에 채우는 데 사용됩니다 Spring Bean实例
.
참고: 단독으로 사용할 경우 유효하지 않으며 다른 주석과 함께 사용해야 합니다. 그리고 이는 Spring Bean에만 적용되며 일반적인 새 객체에는 적용되지 않습니다.
ConfigurationProperties를 사용하는 방법 :
- @ConfigurationProperties + @Component(또는 Bean 인스턴스화를 위한 다른 주석)는 Bean 정의 클래스에 주석을 답니다.
- @ConfigurationProperties + 구성 클래스의 Bean 정의 메소드에 주석이 달린 @Bean
- @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);
}
}