@PropertySource注解的使用及读取自定义的properties文件

时间:2024-10-09 20:44:22

@PropertySource注解的使用及读取自定义的properties文件

  • 一、@PropertySource注解
  • 二、第一种用法
  • 三、第二种用法

一、@PropertySource注解

在这里插入图片描述

若要读取项目yml或者properties配置文件里的属性,可以使用@ConfigurationProperties注解

在这里插入图片描述

如果我们想读取自定义的properties文件,可以使用@PropertySource注解。此注解有一个value属性,@PropertySource(value = “classpath:/config/”),其值为自定义配置文件的路径。

二、第一种用法

@Component、@PropertySource和@ConfigurationProperties三个注解及一个实体类,可以实现读取自定义配置文件:

@Component
@PropertySource(value = "classpath:/config/")
@ConfigurationProperties(prefix = "")
public class InfSsoBean {

    private String code;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public InfSsoBean() {
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

在这里插入图片描述
@ConfigurationProperties注解的preifx属性为properties文件的前缀,properties文件里面的属性key需为小写,且需与实体类属性保持一致。

效果:
在这里插入图片描述

三、第二种用法

@Configuration、@PropertySource、@Bean和@ConfigurationProperties四个注解和一个配置类,一个实体类,实现读取自定义配置文件:

配置类:

@Configuration
@PropertySource(value = "classpath:/config/")
public class SsoConfig {

    @Bean
    @ConfigurationProperties(prefix = "")
    public InfSsoBean infSsoBean() {
        return new InfSsoBean();
    }


}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

实体类:

public class InfSsoBean {

    private String code;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public InfSsoBean() {
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

效果:
在这里插入图片描述
总结:第一种方式适合配置文件中只有一个实体类属性的情况,第二种方式适合配置文件中含有多个实体类属性的情况。