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代码:

@Autowired
private 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的属性名。
注意:需要在类上写入注解
@PropertySource(“classpath:prop.properties”)
一般直接写于springbootapplication或者专门的配置类上即可。

@SpringBootApplication
@EnableTransactionManagement
@PropertySource("classpath:prop.properties")
public class SpringbootMybatisplusApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisplusApplication.class, args);
    }
}

第三种@ConfigurationProperties注解
配置文件config1.properties

spring.c1.name=ccccc1
java代码:

@Component
@PropertySource("classpath:config1.properties")//可以指定配置文件
@ConfigurationProperties(prefix="spring.c1")
//如果在配置文件中为spring.c1.name=ccccc1 有统一的前名,可以perfix提取出来,然后剩下的name名字会自动注入类中所对应的name
public 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的属性名。


版权声明:本文为weixin_38061311原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>