SpringBoot 项目属性的配置和使用
2017-04-08 15:58
741 查看
SpringBoot 项目属性的配置和使用
首先有两种配置文件,分别为:.properties或.yml。一般情况下,项目自动生成的是以.properties后缀的配置文件。一般.properties形式的配置文件的格式如下:
server.port=8080 server.context-path=/hello
而.yml形式的配置未见的格式如下:
server: port: 8080 context-path: /hello
从上面两种形式可以看到:当有前缀的情况下,使用.yml格式的配置文件更简单,因此,更倾向于推荐使用.yml。
不过值得注意的是:使用.yml时,属性名的值和冒号中间必须有空格,如port: 8080正确,port:8080就是错的。值得庆幸的是一般的IDE对此有良好的支持,例如:IDEA。
通过@Value(“${name}”)形式来使用属性
上面介绍了两种属性配置文件,这节就来介绍下如何在程序中使用配置文件中定义的属性。最简单的方式就是使用@Value(“${name}”)形式来使用属性。
例如:在.yml文件中定义了这样的一个属性:
name: wojiushimogui
则在SpringBoot控制器中我们使用该name属性的具体代码如下:
package com.wrh; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /** * Created by wuranghao on 2017/4/7. */ @RestController public class HelloController { @Value("${name}") private String name; @RequestMapping(value="/hello",method= RequestMethod.GET) public String sayHello(){ return "hello "+name ; } }
这样,当我们启动SpringBoot这个项目时,在浏览器中输入:local:8080/hello,可以看到如下的结果:
当然,当属性特别多时,如果每个属性上都使用一个@Value注解来使用配置文件中的属性也比较蛋疼哈,因此,就有必要将配置文件中的属性映射为一个类,然后直接使用类即可。下面就来介绍下@ConfigurationProperties注解。
@ConfigurationProperties讲解
先假设.yml中的内容如下:person: name: wojiushimogui age: 18
我们为其映射的类为:
package com.wrh; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * Created by wuranghao on 2017/4/8. */ @Component @ConfigurationProperties(prefix = "person")//注意prefix为person,与配置文件一致。 public class Person { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
这样就直接在HelloController中直接使用Person这个类即可。如下:
/** * Created by wuranghao on 2017/4/7. */ @RestController public class HelloController { @Autowired private Person person; @RequestMapping(value="/hello",method= RequestMethod.GET) public String sayHello(){ return "hello "+person.getName(); } }
@Value(“#{a.b}”)的用法
不仅可以使用@Value(“${name}”) 这样,还可以使用类似于 @Value(“#{a.b}”)的用法。下面看一个例子。第一步:配置文件中的内容如下;
name: wojiushimogui age: 18
当然,也可以在配置文件中利用已有的属性来构建新的属性值。
例如:
information: "name:${name},age:${age}"
第二步:新建一个Person类
package com.wrh; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * Created by wuranghao on 2017/4/8. */ @Component public class Person { @Value("${name}") private String name; @Value("${age}") private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
第三步:在HelloController类中的内容修改如下:
package com.wrh; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /** * Created by wuranghao on 2017/4/7. */ @RestController public class HelloController { @Value("${name}") private String name; @Value("#{person.age}")//注意 private Integer age; @RequestMapping(value="/hello",method= RequestMethod.GET) public String sayHello(){ return "hello "+name + age; } }
运行此SpringBoot程序的结果如下:
多环境下的配置
多环境下的配置,即不同的环境使用不同的配置文件。具体做法如下:
1、不同环境的配置设置一个配置文件,例如:dev环境下的配置配置在application-dev.yml中;prod环境下的配置配置在application-prod.yml中。
例如,
在application-dev.yml中的内容为:profile: dev 在application-prod.yml中的内容为:profile: prod
2、在application.yml中指定使用哪一个文件。
例如,想指定dev这个配置文件,则在applicatin.yml配置文件中设置内如下:
spring: profiles: active: dev
在dev环境下使用如下的代码测试:
@RestController public class HelloController { @Value("${profile}") private String profile; @RequestMapping(value="/hello",method= RequestMethod.GET) public String sayHello(){ return profile; } }
在浏览器中输入:local:8080/hello看到的结果为:dev。
相关文章推荐
- 详解Spring Boot 属性配置和使用
- spring boot 学习笔记(二):项目属性配置
- Spring Boot 属性配置和使用
- Spring Boot 属性配置和使用
- Spring Boot 属性配置和使用
- SpringBoot项目基本属性配置
- 解决spring-boot项目中无法读取yml配置文件属性问题
- Spring Boot学习笔记-项目属性的简单配置
- springboot项目 打成war包 使用自定义tomcat配置
- Spring Boot属性配置及使用
- 使用Spring Boot搭配mybatis配置项目
- SpringBoot第1小节:.第一个SpringBoot应用和项目属性配置
- Spring boot框架项目,使用maven命令将配置文件打包到jar包外,项目运行读取jar外配置文件
- 使用IDEA从零配置springboot项目环境
- 使用Gradle构建SpringBoot工程系列:第四篇:项目初始化(编辑build.gradle文件,引入项目基本配置及依赖)
- Spring Boot 属性配置和使用
- springboot 项目使用freemarker 配置之后,访问静态和动态页面的方法
- 使用spring boot +Junit 测试 spring mvc 配置中心项目
- Spring Boot 属性配置和使用
- springboot项目接入配置中心,实现@ConfigurationProperties的bean属性刷新方案