在开发的过程中 , 我们为了隔离环境的差异 , 通常需要使用一些配置文件 , Spring 提供了一些组件 , 使得使用配置文件的工作变得更加方便 .
配置文件
job.registry.servers=192.168.186.131:2181,192.168.185.172:2181,192.168.183.79:2181
job.registry.namespace=
job.registry.env-prefix=
job.registry.contact-name=
job.registry.contact-mobile=
job.registry.job-type=
job.registry.nodes[0].ip=192.168.186.131
job.registry.nodes[0].port=2181
job.registry.nodes[1].ip=192.168.185.172
job.registry.nodes[1].port=2181
job.registry.nodes[2].ip=192.168.183.79
job.registry.nodes[2].port=2181
job.registry.node.ip=192.168.183.79
job.registry.node.port=2181
代码
// 1.
@Configuration
// 2.
@PropertySource(encoding = "utf-8" , value = "file:/fileName.properties")
// 3.
@ConfigurationProperties(prefix = "job.registry")
public class RegistryCenterProperties {
//解析成集合
private List<String> servers;
//解析成对象的集合
private List<Node> nodes;
//解析成对象
private Node node;
private String namespace;
//解析成驼峰命名法
private String envPrefix;
private String jobType;
private String contactName;
private String contactMobile;
//get and set ...
}
@Configuration : 标记这是一个的配置类
@PropertySource : 标记我们需要加载的配置文件 和 编码集 等信息 ,
这里需要注意的是 , Spring 会将 @PropertySource 所标记的文件 , 加载到容器内的 Environment 当中 ,
如果同一个配置文件的内容 , 需要映射到多个类里面 , 我们只需要声明一次 , 不需要重复声明 .
@ConfigurationProperties : 这个注解 可以标记在类上面 , 也可以标记在方法上面 , 被这个注解修饰的类或方法 会被**ConfigurationPropertiesBeanRegistrar **这个类解析 , 并生成代理对象 .
在使用这个标签的时候 , 我们可以通过 prefix 这个属性 , 来对文件中前缀相同的配置进行映射 .
这里需要注意的是 , 如果我们的key需要驼峰命名的话 , 需要通过 "-" 来进行标记 .