Spring Boot 的项目属性配置我们一般是放在 Resource 文件夹下,默认的是 application.properties 文件,这里建议使用 .yml 替代 .properties 文件,下面将对两种都做简单介绍,主要是使用 .yml 。
1、使用 application.properties 文件
然后启动项目,这个时候我们的项目首页就是
http://localhost:8081/Blog
2、使用 application.yml
我们可以删除掉刚才的 application.properties 文件
同样,重新启动项目,首页是
http://localhost:8081/Blog
可以发现,yml 这种方式更加简便。记得冒号后加空格
1、我们在 application.yml 下再加几行,如下
2、新建一个 HelloController.java 文件
3、运行项目,在浏览器中访问 http://localhost:8081/Blog/hello
同时,我们发现 配置文件中不需要管属性的值是什么数据类型的,只需要在注入的时候设置即可
1、我们还可以在配置中使用配置
如上,我们再加了一个 content 属性,它可以使用上面配置的其他属性,使用 ${} 即可
2、java 代码如下
3、浏览器中效果如下
如果我们向上面的,在 java 中如果要使用一个属性就要注入一个,像这样
@Value("${name}")
private String name;
一旦属性太多了,我们就要一个个地写,比较麻烦。其实我们可以以注入一个 Bean 的方式来获取属性的值
1、application.yml 不变
2、创建一个 User.java
3、HelloController.java
4、浏览器中效果如下
有时候我们可能需要经常修改配置文件,或者需要两套配置文件,为了方便切换,我们会新建两个,然后选择其中一个启动即可。
1、新建 application-dev.yml
2、新建 application-prod.yml
3、编辑 application.yml
如上,我们使用的是 application-dev.yml 这个配置文件启动的。如果要使用另一个,改成 active: prod 即可
接上第五步,如果我们要同时启动那两个不同配置文件的项目怎么做呢?我们在 Spring Boot入门(1)-第一个Spring Boot应用 中已经介绍了三种启动方式,这里我们可以使用第三种的 java -jar 方式
1、 进入项目文件夹
我们在终端下启动的是 prod 的,然后可以使用 IntelliJ IDEA 启动 dev 的那个
5、最终浏览器效果如下
http://localhost:8083/Blog/hello
http://localhost:8081/Blog/hello
一、.properties 和 .yml 语法对比
1、使用 application.properties 文件
- server.port=8081
- server.context-path=/Blog
然后启动项目,这个时候我们的项目首页就是
http://localhost:8081/Blog
2、使用 application.yml
我们可以删除掉刚才的 application.properties 文件
- server:
- port: 8081
- context-path: /Blog
同样,重新启动项目,首页是
http://localhost:8081/Blog
可以发现,yml 这种方式更加简便。记得冒号后加空格
二、应用属性的配置和使用
1、我们在 application.yml 下再加几行,如下
- server:
- port: 8081
- context-path: /Blog
- name: liuyanzhao
- age: 20
- gender: man
2、新建一个 HelloController.java 文件
- package com.liuyanzhao.blog;
- 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;
- /**
- * @Author 言曌
- * @DATE 2017/10/28 下午7:25
- * @URL http://liuyanzhao.com
- */
- @RestController
- public class HelloController {
- @Value("${name}")
- private String name;
- @Value("${age}")
- private Integer age;
- @Value("${gender}")
- private String gender;
- @RequestMapping(value = "/hello",method = RequestMethod.GET)
- public String say() {
- return "name:"+name+",age="+age+",gender="+gender;
- }
- }
3、运行项目,在浏览器中访问 http://localhost:8081/Blog/hello
同时,我们发现 配置文件中不需要管属性的值是什么数据类型的,只需要在注入的时候设置即可
三、在配置中使用配置
1、我们还可以在配置中使用配置
- server:
- port: 8081
- context-path: /Blog
- name: liuyanzhao
- age: 20
- gender: man
- content: "name=${name},age=${age}"
如上,我们再加了一个 content 属性,它可以使用上面配置的其他属性,使用 ${} 即可
2、java 代码如下
- package com.liuyanzhao.blog;
- 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;
- /**
- * @Author 言曌
- * @DATE 2017/10/28 下午7:25
- * @URL http://liuyanzhao.com
- */
- @RestController
- public class HelloController {
- @Value("${content}")
- private String content;
- @RequestMapping(value = "/hello",method = RequestMethod.GET)
- public String say() {
- return content;
- }
- }
3、浏览器中效果如下
四、注入 Bean 的方式获取属性
如果我们向上面的,在 java 中如果要使用一个属性就要注入一个,像这样
@Value("${name}")
private String name;
一旦属性太多了,我们就要一个个地写,比较麻烦。其实我们可以以注入一个 Bean 的方式来获取属性的值
1、application.yml 不变
- server:
- port: 8081
- context-path: /Blog
- my:
- name: liuyanzhao
- age: 20
- gender: man
2、创建一个 User.java
- package com.liuyanzhao.blog;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.stereotype.Component;
- /**
- * @Author 言曌
- * @DATE 2017/10/28 下午7:45
- * @URL http://liuyanzhao.com
- */
- @Component
- @ConfigurationProperties(prefix = "my")
- public class User {
- private String name;
- private Integer age;
- private String gender;
- 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;
- }
- public String getGender() {
- return gender;
- }
- public void setGender(String gender) {
- this.gender = gender;
- }
- }
3、HelloController.java
- package com.liuyanzhao.blog;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RestController;
- /**
- * @Author 言曌
- * @DATE 2017/10/28 下午7:25
- * @URL http://liuyanzhao.com
- */
- @RestController
- public class HelloController {
- @Autowired
- private User user;
- @RequestMapping(value = "/hello",method = RequestMethod.GET)
- public String say() {
- return user.getName()+user.getAge()+user.getGender();
- }
- }
4、浏览器中效果如下
五、使用多套配置文件,随时切换
有时候我们可能需要经常修改配置文件,或者需要两套配置文件,为了方便切换,我们会新建两个,然后选择其中一个启动即可。
1、新建 application-dev.yml
- server:
- port: 8083
- context-path: /Blog
- my:
- name: saysky
- age: 120
- gender: unknown
2、新建 application-prod.yml
- server:
- port: 8081
- context-path: /Blog
- my:
- name: liuyanzhao
- age: 20
- gender: man
3、编辑 application.yml
- spring:
- profiles:
- active: dev
如上,我们使用的是 application-dev.yml 这个配置文件启动的。如果要使用另一个,改成 active: prod 即可
六、使用 java -jar 的方式同时启动不同配置文件的项目
接上第五步,如果我们要同时启动那两个不同配置文件的项目怎么做呢?我们在 Spring Boot入门(1)-第一个Spring Boot应用 中已经介绍了三种启动方式,这里我们可以使用第三种的 java -jar 方式
1、 进入项目文件夹
/Users/liuyanzhao/Documents/JavaStudy/workspace/springboot
2、编译项目
mvn install
3、 进入 target 目录
cd target
4、 找到对应的 jar,如 blog-0.0.1-SNAPSHOT.jar
然后带参数运行
java -jar blog-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
我们在终端下启动的是 prod 的,然后可以使用 IntelliJ IDEA 启动 dev 的那个
5、最终浏览器效果如下
http://localhost:8083/Blog/hello
http://localhost:8081/Blog/hello
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏