1. 在SpingBoot中 如何加载配置文件 (@PropertySource , @ConfigurationProperties)

在开发的过程中 , 我们为了隔离环境的差异 , 通常需要使用一些配置文件 , 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 servers;
    //解析成对象的集合
    private List 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需要驼峰命名的话 , 需要通过 "-" 来进行标记 .


你可能感兴趣的:(1. 在SpingBoot中 如何加载配置文件 (@PropertySource , @ConfigurationProperties))