@ConfigurationProperties和@Value注解用于获取配置文件中的属性定义并绑定到Java Bean或属性中
一个简单的例子
 @ConfigurationProperties需要和@Configuration配合使用,我们通常在一个POJO里面进行配置:
@Data
@Configuration
@ConfigurationProperties(prefix = "mail")
public class ConfigProperties {
    private String hostName;
    private int port;
    private String from;
}
 
@Data
 @Configuration
 @ConfigurationProperties(prefix = “mail”)
 public class ConfigProperties {
private String hostName;
private int port;
private String from;
 
}
#Simple properties
mail.hostname=host@mail.com
mail.port=9000
mail.from=mailer@mail.com
 
Spring的属性名字匹配支持很多格式,如下所示所有的格式都可以和hostName进行匹配:
mail.hostName
mail.hostname
mail.host_name
mail.host-name
mail.HOST_NAME
 
如果你不想使用@Configuration,,可以有以下选择
//指定单个类,其中绑定bean注入到spring容器
//启用ConfigurationProperties.属性是类的名字
//@EnableAutoConfiguration({NestAppBean.class})
//直接扫描多个包 ,其中绑定bean注入到spring容器
//也是启用ConfigurationProperties.属性是类的 名字
 
==========================================================
 如果你不想使用@Configuration, 那么需要在@EnableConfigurationProperties注解中手动导入配置文件如下:
@SpringBootApplication
@EnableConfigurationProperties(ConfigProperties.class)
public class ConfigPropApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigPropApp.class,args);
    }
}
 
我们也可以在@ConfigurationPropertiesScan中指定Config文件的路径:
@SpringBootApplication
@ConfigurationPropertiesScan("com.flydean.config")
public class ConfigPropApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigPropApp.class,args);
    }
}
 
这样的话程序只会在com.flydean.config包中查找config文件。








