SpringBoot 项目属性的配置和使用
来源:互联网 发布:mac怎么iphone铃声 编辑:程序博客网 时间:2024/06/16 02:26
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. */@RestControllerpublic 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. */@RestControllerpublic 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. */@Componentpublic 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. */@RestControllerpublic 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环境下使用如下的代码测试:
@RestControllerpublic class HelloController { @Value("${profile}") private String profile; @RequestMapping(value="/hello",method= RequestMethod.GET) public String sayHello(){ return profile; }}
在浏览器中输入:local:8080/hello看到的结果为:dev。
- SpringBoot 项目属性的配置和使用
- SpringBoot+rabbitMq的配置和使用Demo
- 第二节:SpringBoot项目属性配置
- Springboot+Redis 配置和使用
- SpringBoot内部配置:“application.properties配置”和”使用XML配置”,读取属性文件中的内容,日志配置,Profile配置(学习:SpringBoot实战)
- Springboot项目使用Nginx 并配置 HTTPS
- SpringBoot关于rabbitmq的配置属性
- SpringBoot 项目属性配置管理
- Log4j和Log4j2的区别(SpringBoot中配置使用)
- SpringBoot学习笔记——项目属性配置
- SpringBoot配置属性系列
- springboot属性配置
- SpringBoot配置属性
- 【SpringBoot】2小时学会SpringBoot学习笔记(第3章 项目属性配置)
- SpringBoot和mongodb开发需要使用到的注解和属性
- springBoot整合actuator监控配置和使用
- 记录SpringBoot使用Druid和Mybatis配置
- 使用idea搭建springboot的maven项目
- HDU 2544 最短路
- 暗影精灵2pro安装win10+ubuntu16.10双系统
- c 程序设计语言 第二版 练习题 6-4
- C++——NOIP例题——字符变换
- 11-TCP 协议(状态机)
- SpringBoot 项目属性的配置和使用
- Android源码-Android系统启动源码分析
- 用java编程时,一个语句行可以分行书写吗?
- Chapter 1 : MySQL体系结构和搜索引擎
- tomcat 配置
- 第1课
- 约瑟夫环
- 392. Is Subsequence
- |poj 2296|2-SAT|二分|Map Labeler