美文网首页
Spring @Value 注解

Spring @Value 注解

作者: ZHG | 来源:发表于2021-10-15 21:23 被阅读0次

在 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)。继续努力💪。

相关文章

  • Spring @Value 注解

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

  • spring boot 加载配置文件

    Spring boot加载配置文件@Value 使用@ConfigurationProperties注解赋值属性 ...

  • Spring bean注解

    Spring自带依赖注入注解 @Required,依赖检查 @Autowired,根据Type注入 @Value,...

  • Spring Properties Loader

    最近在做Spring项目时,使用到了@Value注解,可以动态注入到注解了@Value的属性上;一般我们会把用到的...

  • spring的@Value注解

    这样就可以使用@Value("${spring.redis.test}")来获取,最好加个默认值,比如@Value...

  • spring常用注解-@Value

    @value将外部的值动态注入到Bean中 Bird 配置类 测试类 运行结果

  • spring-value注解

    @Value("#{}") 其实是SpEL表达式的值,可以表示常量的值,或者获取bean中的属性 Value("$...

  • spring注解 -- @Value赋值

    1. 语法说明 为bean的属性添加初始值。赋值的方式 添加基本值: @Value("hi") 使用SpEL:#{...

  • Spring 静态注入

    [toc] Spring 静态注入 一、 @Value静态注入方式 二、注解@PostConstruct方式 三、...

  • spring常用注解

    spring常用注解 Value : 从配置文件中注入变量ConfigurationProperties(boot...

网友评论

      本文标题:Spring @Value 注解

      本文链接:https://www.haomeiwen.com/subject/zrxvoltx.html