对注解不了解的可以看一下:

Java注解,看完就会用

首先我们要明确:

@Value 是 Spring 框架的注解。

它有什么作用呢?

作用

@Value 通过注解将常量配置文件中的值、其他bean的属性值注入到变量中,作为变量的初始值。

使用方式

常量注入

顾名思义,就是把一个写死的值赋给对应变量,形式如下:

// 注入普通字符串
@Value("Bin")
private String username;  // 注入文件资源
@Value("classpath:com/test/config.xml")
private Resource resource;  // 注入URL资源
@Value("http://www.baidu.com")
private Resource url; 

以上做法显而易见,并不能做到动态配置。

这跟直接赋值有啥区别?

所以这种方式应用很少,知道有这么个用法就行了。

读取配置文件

这种是应用最多的方式了,重点记住这种。

形式也简单,废话不多说,直接上代码。

配置文件 application.properties 或者 application.yml,写法略有不同。

application.properties:

common.name=bin

application.yml:

common:
  name: bin
@Value("${common.name}")
private String name;  // 配置文件找不到的话,给一个默认值
@Value("${common.name:JohnDoe}")   
private String name;

读取Bean的属性

读取Bean属性与读取配置文件属性用法不一样,前者使用 $ 符号,后者使用 # 符号

首先将对象注册到 Spring 容器中:

@Data
@Component
public class User {
    private String id;
    private String name;
}

Bean 属性注入:

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

使用案例

最后我们用一个简单案例做一个实现。

创建一个Bean对象:

@Component
@Data
public class Person {
    
    @Value("bin")
    private String name;
    
    @Value("${age}")
    private Integer age;
}

配置文件:

age=22

测试:

@SpringBootTest
class DemoApplicationTests {
    // 读取bean属性
    @Value("#{person.name}")
    private String name;
    // 读取bean属性
    @Value("#{person.age}")
    private String age;
    
    @Test
    void contextLoads() {
        System.out.println("常量注入获取name为:" + name);
        System.out.println("常量注入获取age为:" + age);
    }
}

结果:

常量注入获取name为:bin
常量注入获取age为:22

以上就是对 @Value 的简单介绍,其实@Value还有许多高级用法,本篇不再深入。

发类似这样的小文章的目的都是为了将一些小知识点作为前置,为了在以后说一些艰难晦涩的内容时少啰嗦一些基础。

天下难事,必作于易;

天下大事,必作于细。


联系我:

https://stanezhang.github.io/

@Value是个什么东西的更多相关文章

  1. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  2. iOS有关横向TableView的东西

    之前看到Apple store里面有横向的tableview,当然也有可能是collectionview啦. 尤其是项目中只有一条那么需要横向滑动的东西,就没有必要使用庞大的collectionvie ...

  3. 使用ENode框架前您需要了解的东西(初稿)

    选择ENode意味着什么可能很多人还不太清楚.我简单整理了一下: 意味着你选择了:你需要做DDD领域建模.选择了事件驱动的架构.选择了CQRS架构.选择了最终一致性.选择了事件溯源.选择了分布式.这些 ...

  4. 如何写出高质量的技术博客 这边文章出自http://www.jianshu.com/p/ae9ab21a5730 觉得不错直接拿过来了 好东西要大家分享嘛

        如何写出高质量的技术博客?答案是:如果你想,就一定能写出高质量的技术博客.看起来很唯心,但这就是事实.有足够愿力去做一件目标明确,有良好反馈系统的事情往往很简单.就是不停地训练,慢慢地,你自己 ...

  5. Intellij IDEA的一些东西

    Intellij IDEA的一些东西 2016-03-19 15:26 Ctrl + R 在当前文件进行文本替换 (必备) Ctrl + N 根据输入的 类名 查找类文件 Ctrl + Ctrl + ...

  6. 神奇的BFC以及被忽略的东西

    BFC是CSS中一个非常重要的概念,经常用来清除浮动以及处理外边距折叠,但BFC到底是个什么东西却很难准确的表达清楚,国内的相关技术文档基本都不全面,本文的目的就是对BFC的方方面面做个整理,当然未必 ...

  7. 关于这个博客以及C++入门该懂的一些东西

    给三牧中学c++入门的同学们看的博客. 大概是入门一类的?说不定会写点自己的结题报告. 写的不好/写错了别怪我,蒟蒻瑟瑟发抖. 天哪要开始写入门了我好慌那么接下来是编译器连接. (本蒟蒻喜欢用DEV ...

  8. LabVIEW 吸星大法 - 看见的好东西都是我的(上篇)

    前言 写了多年的LabVIEW程序,你是否面临这样的问题 总是在做一些重复的工作,感觉很没有意思: 总在不停的写代码,做类似的控件,实现相同的功能,丝毫没有成就感: 总在天加班,没有时间去提高自己; ...

  9. 前端er是否忽略了某些东西?——读《ppk谈JavaScript》

    关于书 “不知道ppk的网站QuirksMode,说明你可能还没有真正成为资深的JavaScript程序员.” ——Roger Johansson,瑞典资深Web专家. ppk是世界级前端技术专家,W ...

  10. 解读SDN的东西、南北向接口

    北向接口(Northbound Interface)是为厂家或运营商进行接入和管理网络的接口,即向上提供的接口. 南向接口(Southbound Interface)是提供对其他厂家网元的管理功能,支 ...

随机推荐

  1. 兴达易控Modbus转Profinet网关连接三菱A800变频器配置案例

    兴达易控Modbus转Profinet网关连接1200Profinet转modbus接三菱A800变频器 下面介绍A800 变频器通过兴达易控modbus转profinet网关,使1200plc无需编 ...

  2. Biwen.QuickApi代码生成器功能上线

    [QuickApi("hello/world")] public class MyApi : BaseQuickApi<Req,Rsp>{} 使用方式 : dotnet ...

  3. Redis系列之——API的使用

    文章目录 一 通用命令 1.1 通用命令 1.2 数据结构和内部编码 1.3 单线程架构 1.3.1 单线程架构, 1.3.2 单线程为什么这么快 1.3.3 注意 二 字符串类型 2.1 字符串键值 ...

  4. 基于 Angular和Material autocomplete组件再封装的可双向绑定key-value的可输入下拉框

    GitHub: https://github.com/Xinzheng-Li/AngularCustomerComponent 效果图:为了方便使用,把许多比如ADD的功能去了,可以在使用后自行实现. ...

  5. 【Unity3D】Shader Graph节点

    1 前言 ​ Shader Graph 16.0.3 中有 208 个 Node(节点),本文梳理了 Shader Graph 中大部分 Node 的释义,官方介绍详见→Node-Library. ​ ...

  6. js性能优化解决办法

    1. 减少http请求次数:CSS Sprites, JS.CSS 源码压缩.图片大小控制合适:网页 Gzip,CDN 托管,data 缓存 ,图片服务器 2. 前端模板 JS + 数据,减少由于HT ...

  7. nginx学习(基本概念、配置和命令、反向代理、负载均衡、动静分离)

    之前都只会照着网上的nginx配置和代码什么的直接拿过来用,但是没系统学习过,所以来系统学习一下nginx内容. 建议服务器不要关闭防火墙,按需开启端口就好,然后云服务器也要设置SSH密钥,安全性高一 ...

  8. 使用Kali Linux进行主机发现实验

    主机发现 [实训目的] 掌握主机扫描的工作原理,学会使用ping等扫描工具,发现网络当中活跃的主机. [场景描述] 在虚拟机环境下配置4个虚拟系统"Win XP1" "W ...

  9. 记录一下我的ctf比赛的web题目

    Web之getshell: 具体代码如下 <?php highlight_file(__FILE__); error_reporting(0); echo "<h1>WEL ...

  10. 面试官:SOA 和微服务的区别?这回终于搞清楚了!

    https://developer.aliyun.com/article/839526 简介: 如果我们打开支付宝首页,去看我们的余额,它会展示你的总资产,昨日收益.累计收益等信息.假如这个页面所展示 ...