SpringBoot最常用的3种读取properties的方法

来源:互联网 发布:javascript教程 编辑:程序博客网 时间:2024/05/23 10:55

SpringBoot最常用的3种读取properties的方法

由于最近不小心被坑了一波,所以准备记录下这个坑。

第一种Values注解获取

配置文件为默认读取的application.properties

app.msg=app msg!

java代码:

@Value("${app.msg}")private String msg;

注意点:
app.msg在application.properties配置文件中不存在的话,会报异常。
1. @Value(“${app.msg}”)是会扫描所有的properties配置文件中的属性名。
2.如果同时项目中存在多个properties文件,然后配置文件都有属性app.msg的情况下,会默认选择第一个加载的properties中取值。

第二种Environment类获取

java代码:

@Autowiredprivate Environment env;      @RequestMapping(value = "/c2", method = RequestMethod.GET)      public String c2() {          System.out.println(env.getProperty("spring.c1.name"));          System.out.println(env.getProperty("spring.c2.name"));          return "The c2 : " +env.getProperty("test.msg");      }

通过@Autowired注入Environment来获取参数配置
同样,这个也是扫描所有的properties的属性名。

第三种@ConfigurationProperties注解

配置文件config1.properties

spring.c1.name=ccccc1

java代码:

@Component@PropertySource("classpath:config1.properties")//可以指定配置文件@ConfigurationProperties(prefix="spring.c1")//如果在配置文件中为spring.c1.name=ccccc1 有统一的前名,可以perfix提取出来,然后剩下的name名字会自动注入类中所对应的namepublic class Config1 {    String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

获取name

@RequestMapping(value = "/c1", method = RequestMethod.GET)      public String c1() {          return "The c1 : " +c1.getName();      }

通过@Autowired注入Environment来获取参数配置
同样,这个也是扫描所有的properties的属性名。