SpringBoot最常用的3种读取properties的方法
第一种Values注解获取
配置文件为默认读取的application.properties
app.msg=app msg!
java代码:
@Value("${app.msg}")
private String msg;
注意点:
app.msg在application.properties配置文件中不存在的话,会报异常。
- @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 版权协议,转载请附上原文出处链接和本声明。