【SpringBoot】项目属性配置

举报
谙忆 发表于 2021/05/28 06:49:45 2021/05/28
【摘要】 简单的介绍一下SpringBoot的属性配置。 继续上节的博客喔、 配置application.properties文件: #第一种配置方式 #这种配置方式每个属性名都必须写完整 server.port=8081 #配置端口 server.context-path=/hello #配置项目路径123456 可以跑一下看看,这个时候访问项目就路径需要增加/he...

简单的介绍一下SpringBoot的属性配置。

继续上节的博客喔、

配置application.properties文件:

#第一种配置方式
#这种配置方式每个属性名都必须写完整
server.port=8081
#配置端口
server.context-path=/hello
#配置项目路径
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

可以跑一下看看,这个时候访问项目就路径需要增加/hello项目名了。
而且端口是8081,默认的是8080

进行第二种配置方式之前,先删除application.properties文件
我就不删除了,我重命名为application.txt文件了,建议你删除,选择第二种配置方式即可

第二种配置方式-推荐

在resource目录下新建文件:application.yml

server:
  port: 8081
#  :号后面必须有空格
  context-path: /hello
  
 
  • 1
  • 2
  • 3
  • 4

这个配置就方便很多,不用全名了。
有个注意事项,请看代码中的注释

运行结果和第一种配置方式是一样的

进行自定义的配置变量

例如增加:

server:
  port: 8082
#  :号后面必须有空格
  context-path: /hello
name: 陈浩翔
age: 20
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

我们不需要在这里配置变量类型,只要在注入的时候写好属性类型即可
我们使用的是 @Value注入

在代码中读取配置:

package cn.chenhaoxiang;

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 with IntelliJ IDEA.
 * User: 陈浩翔.
 * Date: 2017/12/25.
 * Time: 下午 9:44.
 * Explain:
 */
@RestController
public class HelloController { @Value("${name}")//这个变量读取写法有点像jsp读取session的 private String name; @Value("${age}") private Integer age; @RequestMapping(value = "/hello",method = RequestMethod.GET) public String say() { return "Hello Spring Boot!"; } @RequestMapping(value = "/info",method = RequestMethod.GET) public String info() { return name+","+age; }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

运行之后,到浏览器输入地址看运行结果

还可以在配置中使用配置,我们可以在配置文件中这么写:

info: "name:${name},age:${age}"
  
 
  • 1

这样就可以在配置中引用name的值和age的值

有没有发现上面的配置方式有点麻烦,如果我有很多属性,岂不是要写很多读取和写嘛
放心,肯定有简便方式的,这个时候我们可以选择用类来封装

我们定义一个People类。
有年龄,姓名,地址属性
接下来看代码吧,代码说明一切

package cn.chenhaoxiang;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * Created with IntelliJ IDEA.
 * User: 陈浩翔.
 * Date: 2017/12/25.
 * Time: 下午 9:58.
 * Explain:
 */
@Component //注入Bean需要
@ConfigurationProperties(prefix = "people")//获取前缀是people的配置
public class People { private String name; private Integer age; private String address; 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 getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "People{" + "name='" + name + '\'' + ", age=" + age + ", address='" + address + '\'' + '}'; }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

到配置中配置People的值:

people:
  name: chx
  age: 20
  address: 长沙
  
 
  • 1
  • 2
  • 3
  • 4

HelloController.java
我们可以这样注入People的Bean:

@Autowired private People people;

@RequestMapping(value = "/people",method = RequestMethod.GET)
public People people() { return people;
}//返回的是对象的JSON字符串
  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我们看输出:

动态配置

比如我们开发的时候和发布的时候使用的数据库地址不同,我们可以这样配置

新建两个配置文件,分别为:
application-dev.yml 开发使用
application-prod.yml 发布使用

默认的配置文件中的内容可以删除了。写上:
application.yml

spring:
  profiles: active: dev
  
 
  • 1
  • 2
  • 3

修改application-dev.yml中的值,和application-prod.yml不同即可,这个时候可以运行项目,打开链接,可以看到people的值是dev文件的内容
你可以将dev改成prod,配置内容即是prod文件中的内容

但是这样还不是动态,因为我们需要每次改变application.yml中的值。
所以我们可以这样做,用上篇博客的启动方式
也就是java -jar的启动方式

首先编译一下:

mvn install
  
 
  • 1

然后运行:

java -jar target/hello-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
  
 
  • 1

后面带上动态参数即可

源代码下载地址:

GITHUB源码下载地址: 点我进行下载

本文章由[谙忆]编写, 所有权利保留。
欢迎转载,分享是进步的源泉。

转载请注明出处:http://chenhaoxiang.cn/2017/12/25/0001/
本文源自谙忆的博客

文章来源: chenhx.blog.csdn.net,作者:谙忆,版权归原作者所有,如需转载,请联系作者。

原文链接:chenhx.blog.csdn.net/article/details/79182552

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。