前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在springboot中使用${}占位符配置参数

在springboot中使用${}占位符配置参数

作者头像
lyb-geek
发布2018-09-27 09:45:41
6.3K0
发布2018-09-27 09:45:41
举报
文章被收录于专栏:Linyb极客之路Linyb极客之路

最近在解读公司已有的微服务架构时,发现一个挺配有趣的配置,该配置型如下:

代码语言:javascript
复制
user:
  user-name: ${username}
  age: ${age}

而在常规的springboot配置中,我们最常见的配置参数诸如是

代码语言:javascript
复制
user:
  user-name: 张三
  age: 10

而通过${username}和${age}的配置方式,如果没通过特殊处理,不出意外的话,打印的结果是字符串${username}和${age},这种结果显然不符合预期。那如何通过${username}和${age}打印出诸如username:张三,age:10效果呢?接下介绍实现这一功能主角:System.setProperty

System.setProperty

setProperty (String prop, String value); 1、 设置指定键对值的系统属性,其中prop:系统属性的名称,value:系统属性的值。注:这里的system,系统指的是 JRE (runtime)system,不是指 OS。 2、System.setProperty相当于一个静态变量,存在内存里面,可以在项目的任何一个地方,通过System.getProperty("变量")来获得

在springboot中通过System.setProperty设置参数变量

代码语言:javascript
复制
public class ActivitiStart extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // TODO Auto-generated method stub
        return builder;
    }

    public static void main(String[] args) {
        System.setProperty("username", "张三");
        System.setProperty("age", "10");
        new SpringApplicationBuilder(ActivitiStart.class).run(args);

    }

}
代码语言:javascript
复制
@Component
public class User {

    @Value("${user.user-name}")
    private String username;

    @Value("${age}")
    private String age;

    @PostConstruct
    public void init() {
        System.out.println(this);
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User [username=" + username + ", age=" + age + "]";
    }

}

控制台输出

代码语言:javascript
复制
User [username=张三, age=10]

使用场景

参数配置在数据库中,多个服务使用同一份配置,明了的说就是如果公司有自研配置中心的需求,可以考虑一下setProperty,通过setProperty与el占位符结合,搭配@Value

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linyb极客之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在springboot中通过System.setProperty设置参数变量
    • 控制台输出
    • 使用场景
    相关产品与服务
    微服务引擎 TSE
    微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档