@Value是个什么东西
对注解不了解的可以看一下:

首先我们要明确:
@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还有许多高级用法,本篇不再深入。
发类似这样的小文章的目的都是为了将一些小知识点作为前置,为了在以后说一些艰难晦涩的内容时少啰嗦一些基础。
天下难事,必作于易;
天下大事,必作于细。
联系我:
@Value是个什么东西的更多相关文章
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- iOS有关横向TableView的东西
之前看到Apple store里面有横向的tableview,当然也有可能是collectionview啦. 尤其是项目中只有一条那么需要横向滑动的东西,就没有必要使用庞大的collectionvie ...
- 使用ENode框架前您需要了解的东西(初稿)
选择ENode意味着什么可能很多人还不太清楚.我简单整理了一下: 意味着你选择了:你需要做DDD领域建模.选择了事件驱动的架构.选择了CQRS架构.选择了最终一致性.选择了事件溯源.选择了分布式.这些 ...
- 如何写出高质量的技术博客 这边文章出自http://www.jianshu.com/p/ae9ab21a5730 觉得不错直接拿过来了 好东西要大家分享嘛
如何写出高质量的技术博客?答案是:如果你想,就一定能写出高质量的技术博客.看起来很唯心,但这就是事实.有足够愿力去做一件目标明确,有良好反馈系统的事情往往很简单.就是不停地训练,慢慢地,你自己 ...
- Intellij IDEA的一些东西
Intellij IDEA的一些东西 2016-03-19 15:26 Ctrl + R 在当前文件进行文本替换 (必备) Ctrl + N 根据输入的 类名 查找类文件 Ctrl + Ctrl + ...
- 神奇的BFC以及被忽略的东西
BFC是CSS中一个非常重要的概念,经常用来清除浮动以及处理外边距折叠,但BFC到底是个什么东西却很难准确的表达清楚,国内的相关技术文档基本都不全面,本文的目的就是对BFC的方方面面做个整理,当然未必 ...
- 关于这个博客以及C++入门该懂的一些东西
给三牧中学c++入门的同学们看的博客. 大概是入门一类的?说不定会写点自己的结题报告. 写的不好/写错了别怪我,蒟蒻瑟瑟发抖. 天哪要开始写入门了我好慌那么接下来是编译器连接. (本蒟蒻喜欢用DEV ...
- LabVIEW 吸星大法 - 看见的好东西都是我的(上篇)
前言 写了多年的LabVIEW程序,你是否面临这样的问题 总是在做一些重复的工作,感觉很没有意思: 总在不停的写代码,做类似的控件,实现相同的功能,丝毫没有成就感: 总在天加班,没有时间去提高自己; ...
- 前端er是否忽略了某些东西?——读《ppk谈JavaScript》
关于书 “不知道ppk的网站QuirksMode,说明你可能还没有真正成为资深的JavaScript程序员.” ——Roger Johansson,瑞典资深Web专家. ppk是世界级前端技术专家,W ...
- 解读SDN的东西、南北向接口
北向接口(Northbound Interface)是为厂家或运营商进行接入和管理网络的接口,即向上提供的接口. 南向接口(Southbound Interface)是提供对其他厂家网元的管理功能,支 ...
随机推荐
- Go语言系列——31-自定义错误、32-panic和recover、33-函数是一等公民(头等函数)、34-反射、35-读取文件、36-写入文件
文章目录 31-自定义错误 使用 New 函数创建自定义错误 使用 Errorf 给错误添加更多信息 使用结构体类型和字段提供错误的更多信息 使用结构体类型的方法来提供错误的更多信息 32-panic ...
- 使用 TensorFlow 进行机器学习
使用 TensorFlow 进行机器学习 这是使用 TensorFlow 进行机器学习的官方代码存储库. 使用 TensorFlow(Google 最新.最好的机器学习库)开始进行机器学习. 概括 第 ...
- OpenResty入门之压测篇:压测工具界的 “悍马” wrk 审核中
在上篇文章 每个后端都应该了解的 OpenResty 入门以及网关安全实战 中,我向大家介绍了 OpenResty 的入门使用是 WAF 防御实战,这篇文章将给大家继续介绍 OpenResty 入门之 ...
- DASCTF X CBCTF 2023|无畏者先行(Misc WP)
justpaint 1.题目信息 FLAG被我弄丢了>_<不过,JBN应该记得,或许你能从他那得到一些线索. 附件是压缩包有密码.. 2.解题方法 暴力破解压缩包,测试长度为6,选择所有数 ...
- Vue之class的用法
Vue中class的使用总结如下: 使用形式v-bind:class 简写:class 1.在数组中使用一个class <!DOCTYPE html> <html lang=&qu ...
- docker入门加实战—项目部署之DockrCompose
docker入门加实战-项目部署之DockrCompose 我们部署一个简单的java项目,可能就包含3个容器: MySQL Nginx Java项目 而稍微复杂的项目,其中还会有各种各样的其它中间件 ...
- Error running 'TestAlterNickname.test': Command line is too long. Shorten command line for TestAlterNickname.test or also for JUnit default configuration
问题描述 如图IDEA报错问题,发生在我用JUnit进行测试时. 解决方法 1. 直接点击 default 2. Modify options -> Shorten command line 3 ...
- JUC并发编程学习笔记(十六)Volatile
Volatile 保证可见性 private volatile static Integer num = 0; 使用了volatile关键字,即可保证它本身可被其他线程的工作内存感知,即变化时也会被同 ...
- EdisonTalk.MongoProxy组件发布v0.0.6版本
大家好,我是Edison. 组件发布的背景 之前工作中需要用到MongoDB的事务操作,因此参考了一些资料封装了一个小的组件,提供基础的CRUD Repository基类 和 UnitOfWork工作 ...
- L2-038 病毒溯源
#include <bits/stdc++.h> using namespace std; const int N = 10010; vector<int> g[N]; boo ...