@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文件。