@Value是个什么东西

这篇具有很好参考价值的文章主要介绍了@Value是个什么东西。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

Java注解,看完就会用

@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还有许多高级用法,本篇不再深入。

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

天下难事,必作于易;

天下大事,必作于细。


联系我:

https://stanezhang.github.io/文章来源地址https://www.toymoban.com/news/detail-774091.html

到了这里,关于@Value是个什么东西的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mac资源库的东西可以删除吗?mac资源库在哪里打开 cleanmymacx是什么 cleanmymac免费下载

    在使用Mac电脑的过程中,用户可能会遇到存储空间不足的问题。一种解决方法是清理不必要的文件,其中资源库(Library)文件夹是一个常被提及但又让人迷惑的目标。Mac资源库的东西可以删除吗?本文旨在解释Mac资源库的作用、它包含什么内容,以及如何安全地删除其中的内

    2024年04月10日
    浏览(87)
  • 了解 Langchain️是个啥?:第 1 部分

            在日常生活中,我们主要致力于构建端到端的应用程序。我们可以使用许多自动 ML 平台和 CI/CD 管道来自动化 ml 管道。我们还有像Roboflow和Andrew N.G.的登陆AI这样的工具来自动化或创建端到端的计算机视觉应用程序。         如果我们想在OpenAI或拥抱脸的帮助下

    2024年02月13日
    浏览(66)
  • 从本次战疫,作为普通人可以学到的东西

    前人不忘,后事之师。 从本次疫情的控制,可以学到什么? 早发现,早隔离,早识别,早就诊。 定位传染源,传播途径,传播方法,确定潜伏期,检测方法,确认病人症状。 阻断传播途径: 疑似和确诊分开。 轻症和重症分开。 区域间隔离。 动员能力 医疗物资,生产,运

    2024年02月19日
    浏览(44)
  • Spring中的@Value注解详解

    概述 本文配置文件为yml文件 在使用spring框架的项目中,@Value是经常使用的注解之一。其功能是将与配置文件中的键对应的值分配给其带注解的属性。在日常使用中,我们常用的功能相对简单。本文使您系统地了解@Value的用法。 @Value 注解可以用来将外部的值动态注入到 Bean

    2024年02月06日
    浏览(51)
  • 解答小米路由器可不可以远程控制下载东西及如何操作

    最近有网友“飘摇”问到小编这样一个问题:小米路由器可以远程控制下载东西吗?如果可以,要如何操作呢?针对这个问题,其实小编很久之前就写过类似的教程,下面简单为其附上简单的远程下载设置步骤。 小米路由器内置超大硬盘,可以存放很多视频文件,远程控制下

    2024年02月08日
    浏览(38)
  • docker 的volume 是个什么概念

    在Docker中,Volume(卷)是一种用于在容器和主机之间共享和持久化数据的机制。Volumes允许在容器之间或容器与主机之间共享文件,并且数据在容器的生命周期中是持久的。这是因为容器的文件系统是临时的,容器被删除后文件系统中的数据也会被清除,而Volume提供了一种解决

    2024年02月22日
    浏览(40)
  • Spring中@Value注解取值为null问题排查

    一、背景 近期应用中因业务迭代需要接入 user 客户端,接入后总是启动失败,报注册 user bean 依赖的配置属性为 null(如 appName,group 等都为空),示例代码如下: 二、@Value 取值为 null 原因分析 2.1. @Value 取值为 null 常见原因分析 常见现象一:类没有交给 Spring 管理,比如类没

    2024年02月10日
    浏览(39)
  • 如何在SpringBoot中使用@Value注解来设置默认值

    👽👽👽在Spring Boot中,使用@Value注解可以为属性设置默认值。 @Value注解可以用于注入以下类型的属性: 1、基本数据类型(如字符串、整数、浮点数等) 2、基本数据类型的数组 3、集合类型(如List、Set等) 4、自定义数据类型,包括自定义对象和自定义对象的集合 5、Spri

    2024年02月11日
    浏览(36)
  • 十万个Web3为什么:TRON (TRX)是个什么鬼?

    Tron是一个智能合约区块链,旨在打造一个去中心化互联网的底层基础。 当今主流互联网由中心化的机构所主导,比如像Google、Facebook和Amazon这样的大公司拥有并控制着大家共同创造的数据。这种模式让这些中心化的中间商变的非常富有,而普通人不仅得不到对等的收入,甚至

    2023年04月09日
    浏览(48)
  • 进阶项目 01 使用@value注解,@ConfigurationProperties ,@PropertySource和properties文件

    这可能是分布式开发的前奏,什么是分布式开发,一般在学校里面写的springboot项目,只有application.properties或者是application.yml文件中的一个配置信息,例如: application.yml文件中: 这种一般是单体开发(一个服务器) 而分布式开发,是多个服务器在同一个项目中去使用,可能

    2023年04月25日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包