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


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

user:
  user-name: ${username}
  age: ${age}

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

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设置参数变量

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);

    }

}
@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 + "]";
    }

}

控制台输出

User [username=张三, age=10]

使用场景

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

优质内容筛选与推荐>>
1、MongoDB的删除操作
2、TCP与UDP的区别
3、前端 -----02 body标签中相关标签
4、如何提升系统频率
5、博客发布插件 - Wiz 为知个人知识管理


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号