Spring @Value 注解

在 Spring 中看到使用 @Value 时,有的使用【$】,也有使用【#】的,那么他俩有什么区别呢?

用途区别

  • 【$】主要获取的是配置文件 application.yml /application.proterties 中的配置信息。
  • 【#】主要获取的是对象中的方法或者属性值,也可以是表达式返回的值。
    获取对象内属性的值,需要属性有 set、get 方法,例如下方示例 TestModel 的 name。
  • 【#】还可以和【$】结合使用,可以对 【$】引用的变量进行简单的的逻辑处理。

示例

  • application.yml 配置
config:
  version: v1.0.0
  test: test
  • Config 类
@ConfigurationProperties("config")
@Component
public class Config {
    private String version;

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }
}
  • TestModel 类
@Component
public class TestModel {
    private String name = "testModel";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String resetName(){
        return this.name+"+reset";
    }
}
  • 使用类
@RestController
@RequestMapping("/testApi")
public class TestController {

    @Value("${config.test}")
    private String test;

    @Value("#{config.version}")
    private String version;

    @Value("#{testModel.name}")
    private String name;

    @Value("#{testModel.resetName()}")
    private String resetName;

    @Value("#{T(java.lang.Math).random()* 100.0}")
    private double randomNum;

    @Value("#{'${config.test}'+'ddd'}")
    private String mergeAdd;

    @Value("#{'${config.test}'.substring(2)}")
    private String mergeSub;

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public void test(){
        System.out.println(test);// test
        System.out.println(version);// v1.0.0
        System.out.println(name);// testModel
        System.out.println(resetName);// testModel+reset
        System.out.println(randomNum);// 46.709772758997524
        System.out.println(mergeAdd);// testddd
        System.out.println(mergeSub);// st
    }
}

总结

Spring 相关还有很多知识点,例如:IOC 容器、AOP、数据访问、Web开发、消息、测试等。它是个博大精深的东西,想要很熟练的使用Spring ,还有很长的路要走(Spring MVC、Spring Boot、Spring Cloud)。继续努力💪。

欢迎广大网友关注在下的公众号,公众号会不定期的发布互联网相关文章。
扫码关注

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值