@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文件。
属性嵌套
我们可以嵌套class,list,map, 下面我们举个例子,先创建一个普通的POJO:
@Data
public class Credentials {
private String authMethod;
private String username;
private String password;
}
然后创建一个嵌套的配置文件:
@Data
@Configuration
@ConfigurationProperties(prefix = "nestmail")
public class NestConfigProperties {
private String host;
private int port;
private String from;
private List<String> defaultRecipients;
private Map<String, String> additionalHeaders;
private Credentials credentials;
}
public class Employee {
private String name;
private double salary;
}
对应的属性文件:
conversion.employee=john,2000
我们需要自己实现一个Converter接口的转换类:
@Component
@ConfigurationPropertiesBinding
public class EmployeeConverter implements Converter<String, Employee> {
@Override
public Employee convert(String from) {
String[] data = from.split(",");
return new Employee(data[0], Double.parseDouble(data[1]));
}
}