Spring Boot入门(2)-项目属性配置

Spring Boot 的项目属性配置我们一般是放在 Resource 文件夹下,默认的是 application.properties 文件,这里建议使用 .yml 替代 .properties 文件,下面将对两种都做简单介绍,主要是使用 .yml 。

一、.properties 和 .yml 语法对比

1、使用 application.properties 文件

  1. server.port=8081
  2. server.context-path=/Blog

然后启动项目,这个时候我们的项目首页就是

http://localhost:8081/Blog

2、使用 application.yml

我们可以删除掉刚才的 application.properties 文件

  1. server:
  2.   port: 8081
  3.   context-path: /Blog

同样,重新启动项目,首页是

http://localhost:8081/Blog

可以发现,yml 这种方式更加简便。记得冒号后加空格

 

二、应用属性的配置和使用

1、我们在 application.yml 下再加几行,如下

  1. server:
  2.   port: 8081
  3.   context-path: /Blog
  4. name: liuyanzhao
  5. age: 20
  6. gender: man

2、新建一个 HelloController.java 文件

  1. package com.liuyanzhao.blog;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RequestMethod;
  5. import org.springframework.web.bind.annotation.RestController;
  6. /**
  7.  * @Author 言曌
  8.  * @DATE 2017/10/28 下午7:25
  9.  * @URL http://liuyanzhao.com
  10.  */
  11. @RestController
  12. public class HelloController {
  13.     @Value("${name}")
  14.     private String name;
  15.     @Value("${age}")
  16.     private Integer age;
  17.     @Value("${gender}")
  18.     private String gender;
  19.     @RequestMapping(value = "/hello",method = RequestMethod.GET)
  20.     public String say() {
  21.         return "name:"+name+",age="+age+",gender="+gender;
  22.     }
  23. }

3、运行项目,在浏览器中访问 http://localhost:8081/Blog/hello

Spring Boot入门(2)-项目属性配置

 

同时,我们发现 配置文件中不需要管属性的值是什么数据类型的,只需要在注入的时候设置即可

 

三、在配置中使用配置

1、我们还可以在配置中使用配置

  1. server:
  2.   port: 8081
  3.   context-path: /Blog
  4. name: liuyanzhao
  5. age: 20
  6. gender: man
  7. content: "name=${name},age=${age}"

如上,我们再加了一个 content 属性,它可以使用上面配置的其他属性,使用 ${} 即可

2、java 代码如下

  1. package com.liuyanzhao.blog;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RequestMethod;
  5. import org.springframework.web.bind.annotation.RestController;
  6. /**
  7.  * @Author 言曌
  8.  * @DATE 2017/10/28 下午7:25
  9.  * @URL http://liuyanzhao.com
  10.  */
  11. @RestController
  12. public class HelloController {
  13.     @Value("${content}")
  14.     private String content;
  15.     @RequestMapping(value = "/hello",method = RequestMethod.GET)
  16.     public String say() {
  17.         return content;
  18.     }
  19. }

3、浏览器中效果如下

Spring Boot入门(2)-项目属性配置

 

四、注入 Bean 的方式获取属性

如果我们向上面的,在 java 中如果要使用一个属性就要注入一个,像这样

    @Value("${name}")

    private String name;

一旦属性太多了,我们就要一个个地写,比较麻烦。其实我们可以以注入一个 Bean 的方式来获取属性的值

1、application.yml 不变

  1. server:
  2.   port: 8081
  3.   context-path: /Blog
  4. my:
  5.   name: liuyanzhao
  6.   age: 20
  7.   gender: man

2、创建一个 User.java

  1. package com.liuyanzhao.blog;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. import org.springframework.stereotype.Component;
  4. /**
  5.  * @Author 言曌
  6.  * @DATE 2017/10/28 下午7:45
  7.  * @URL http://liuyanzhao.com
  8.  */
  9. @Component
  10. @ConfigurationProperties(prefix = "my")
  11. public class User {
  12.     private String name;
  13.     private Integer age;
  14.     private String gender;
  15.     public String getName() {
  16.         return name;
  17.     }
  18.     public void setName(String name) {
  19.         this.name = name;
  20.     }
  21.     public Integer getAge() {
  22.         return age;
  23.     }
  24.     public void setAge(Integer age) {
  25.         this.age = age;
  26.     }
  27.     public String getGender() {
  28.         return gender;
  29.     }
  30.     public void setGender(String gender) {
  31.         this.gender = gender;
  32.     }
  33. }

3、HelloController.java

  1. package com.liuyanzhao.blog;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RequestMethod;
  5. import org.springframework.web.bind.annotation.RestController;
  6. /**
  7.  * @Author 言曌
  8.  * @DATE 2017/10/28 下午7:25
  9.  * @URL http://liuyanzhao.com
  10.  */
  11. @RestController
  12. public class HelloController {
  13.     @Autowired
  14.     private User user;
  15.     @RequestMapping(value = "/hello",method = RequestMethod.GET)
  16.     public String say() {
  17.         return user.getName()+user.getAge()+user.getGender();
  18.     }
  19. }

4、浏览器中效果如下

Spring Boot入门(2)-项目属性配置

五、使用多套配置文件,随时切换

有时候我们可能需要经常修改配置文件,或者需要两套配置文件,为了方便切换,我们会新建两个,然后选择其中一个启动即可。

1、新建 application-dev.yml

  1. server:
  2.   port: 8083
  3.   context-path: /Blog
  4. my:
  5.   name: saysky
  6.   age: 120
  7.   gender: unknown

2、新建 application-prod.yml

  1. server:
  2.   port: 8081
  3.   context-path: /Blog
  4. my:
  5.   name: liuyanzhao
  6.   age: 20
  7.   gender: man

3、编辑 application.yml

  1. spring:
  2.   profiles:
  3.     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

Spring Boot入门(2)-项目属性配置

 

我们在终端下启动的是 prod 的,然后可以使用 IntelliJ IDEA 启动 dev 的那个

5、最终浏览器效果如下

http://localhost:8083/Blog/hello

Spring Boot入门(2)-项目属性配置

http://localhost:8081/Blog/hello

Spring Boot入门(2)-项目属性配置

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半缘修道半缘君丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值