【Spring实战】29 @Value 注解

文章目录

    • 1. 定义
    • 2. 好处
    • 3. 示例
      • 1)注入基本类型
      • 2)注入集合类型
      • 3)使用默认值
      • 4)注入整数和其他类型
    • 总结

在实际的应用中,我们经常需要从外部配置文件或其他配置源中获取参数值。Spring 框架提供了 @Value 注解,它是一个强大的工具,让我们能够轻松地将配置值注入到 Spring Bean 中

1. 定义

@Value 注解是 Spring 框架中的一个注解,它用于从属性文件、环境变量或其他配置源中注入值到类的字段或方法参数中。

2. 好处

  • 外部配置:

    允许在应用程序的外部配置文件中设置参数值,而不是硬编码在代码中

  • 灵活性:

    可以根据环境或部署配置动态调整参数值,而不需要修改代码

  • 简化配置:

    简化了配置文件的读取和属性注入的操作

3. 示例

1)注入基本类型

DemoComponent.java

package com.cheney.demo;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class DemoComponent {@Value("${demo.name}")private String name;public void print() {System.out.println("名字是: " + name);}
}

上述代码中,${demo.name} 表示从配置文件中读取 demo.name 的值,并将其注入到 name 字段中

DemoApplication.java

package com.cheney.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {ApplicationContext context = SpringApplication.run(DemoApplication.class, args);context.getBean(DemoComponent.class).print();}
}

application.properties

demo.name=cheney

执行结果

在这里插入图片描述

2)注入集合类型

DemoComponent.java

package com.cheney.demo;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.util.List;@Component
public class DemoComponent {@Value("${demo.language}")private List<String> languageList;public void print() {System.out.println("语言是: " + languageList);}
}

在配置文件中,demo.language 可以设置为类似 Java,Python 的值,@Value 注解将其自动转换为List

DemoApplication.java

package com.cheney.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {ApplicationContext context = SpringApplication.run(DemoApplication.class, args);context.getBean(DemoComponent.class).print();}
}

application.properties

demo.language=Java,Python

执行结果

在这里插入图片描述

3)使用默认值

DemoComponent.java

package com.cheney.demo;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class DemoComponent {@Value("${demo.name:hello}")private String name;public void print() {System.out.println("名字是: " + name);}
}

在这个例子中,如果配置文件中没有定义 demo.name,则会使用默认值 hello

DemoApplication.java

package com.cheney.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {ApplicationContext context = SpringApplication.run(DemoApplication.class, args);context.getBean(DemoComponent.class).print();}
}

application.properties

#demo.name=cheney

执行结果

在这里插入图片描述

4)注入整数和其他类型

DemoComponent.java

package com.cheney.demo;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class DemoComponent {@Value("${demo.age}")private int age;public void print() {System.out.println("年龄是: " + age);}
}

@Value 注解也支持注入其他基本类型,如整数、布尔值等。

DemoApplication.java

package com.cheney.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {ApplicationContext context = SpringApplication.run(DemoApplication.class, args);context.getBean(DemoComponent.class).print();}
}

application.properties

demo.age=22

执行结果

在这里插入图片描述

总结

通过 @Value 注解,Spring 提供了一种简单而强大的方式,将外部配置值注入到应用程序中。这样的灵活性使得我们能够更好地适应不同的环境和需求,而不需要修改源代码,详细的注解使用说明请查阅官方文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/626285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《DAMA数据管理知识体系指南》05—第5章 数据建模和设计 知识点记录

第5章 数据建模和设计 5.1 引言 1.数据建模概要&#xff1a; 1&#xff09;本章将描述数据模型的用途、数据建模中的基本概念和常用词汇以及数据建模的目标和原则。本章将使用一组与教育相关的数据作为案例来说明用各种数据建模的方法&#xff0c;并介绍它们之间的差异。 2&a…

如何用Mac工具制作“苹果高管形象照”

大伙儿最近有没有刷到“苹果高管形象照”风格&#xff0c;详细说来就是&#xff1a; 以苹果官网管理层简介页面中&#xff0c;各位高管形象照为模型&#xff0c;佐以磨皮、美白、高光等修图术&#xff0c;打造的看上去既有事业又有时间有氧的证件照&#xff0c;又称“苹…

OpenCV-25sobel算子(索贝尔算子)

前面所提到的滤波都是用于降噪的&#xff0c;去掉噪声&#xff0c;而算子是用来找边界&#xff0c;来识别图像的边缘。 一、概念 边缘是像素值发生跃迁的值&#xff0c;是图像的显著特点之一&#xff0c;在图像特征提取&#xff0c;对象检测&#xff0c;模式识别等方面都有重…

Vue3响应式系统(一)

一、副作用函数。 副作用函数指的是会产生副作用的函数。例如&#xff1a;effect函数会直接或间接影响其他函数的执行&#xff0c;这时我们便说effect函数产生了副作用。 function effect(){document.body.innerText hello vue3 } 再例如&#xff1a; //全局变量let val 2f…

力扣54. 螺旋矩阵

模拟 思路&#xff1a; 转向表示&#xff1a;使用行下标和列下标变化&#xff1b; 比如向上&#xff1a;行下标 - 1&#xff0c; 列下标&#xff0c;即 {-1, 0}同理向下 {1, 0}{0, 1} 表示向右{0, -1} 表示向左螺旋方向为&#xff1a;向右、向下、向左、向上&#xff0c;周期变…

《微信小程序开发从入门到实战》学习八十三

6.13 视频API 使用视频API可以对用户手机设备中的视频进行一些操作。如果希望播放视频内容&#xff0c;需要使用小程序中的video组件。 6.13.1 保存视频API 使用wx.saveVideoToPhotosAlbum接口可将视频保存到手机相册&#xff0c;支持MP4视频格式。该接口用前需用户授权scop…

RESTfulAPI和webservice 到底有啥区别

RESTful API和Web Service在多个方面存在显著的区别。 首先&#xff0c;从定义上看&#xff0c;Web Service是一个平台独立的、低耦合的、自包含的、基于可编程的web的应用程序&#xff0c;可使用开放的XML&#xff08;标准通用标记语言下的一个子集&#xff09;标准来描述、发…

DOS命令

当使用DOS命令时&#xff0c;可以在命令提示符下输入各种命令以执行不同的任务。以下是一些常见DOS命令的详细说明&#xff1a; dir (Directory): 列出当前目录中的文件和子目录。 用法: dir [drive:][path][filename] [/p] [/w] cd (Change Directory): 更改当前目录。 用法: …

Alist开源网盘搭建

官网&#xff1a;https://alist.nn.ci/zh/github下载地址&#xff1a;https://github.com/alist-org/alist/releases gitcode上也提供了源码:https://gitcode.com/mirrors/alist-org/alist/tags 源码安装使用自己研究,这里不讲解,较为复杂 我使⽤的版本:v3.29.1 我的下载地址:…

websocket项目 聊天室

1.项目概述 这个项目是一个基本的实时聊天应用&#xff0c;适用于小型团队或群体。提供了多个聊天室供用户选择。可以通过该代码进行进一步的扩展和定制&#xff0c;例如添加聊天机器人、改进界面等。 2.技术栈 flask&#xff0c;boostrapt&#xff0c;websocket&#xff0c…

adb调试软件下载 及 常用调试命令

一、软件下载 Windows版本&#xff1a;下载 Mac版本&#xff1a;下载 Linux版本&#xff1a;下载 二、常见调试命令 进入ADB调试 在文件路径栏输入cmd&#xff0c;回车&#xff0c;即可进入adb调试。注意&#xff1a;以下3条不要登录设备 shell &#xff08;一&#xff09;显…

大语言模型下载,huggingface和modelscope加速

huggingface 下载模型 如果服务器翻墙了&#xff0c;不用租机器 如果服务器没翻墙&#xff0c;可以建议使用下面的方式 可以租一台**autodl**不用显卡的机器&#xff0c;一小时只有1毛钱&#xff0c;启动学术加速&#xff0c;然后下载&#xff0c;下载完之后&#xff0c;用scp…

芯片烧写工具

问题描述 最近出了一个机器变砖的问题&#xff0c;一些用户使用的设备&#xff0c;头一天晚上用的好好的&#xff0c;第二天来一上电开机就起不来了。 然后就寄回来&#xff0c;返厂维修。一些是因为部分电子器件坏了&#xff0c;还有一些是文件系统问题&#xff0c;重新升级一…

GIT SourceTree 回滚提交

步骤一&#xff1a; 步骤二&#xff1a; 步骤三&#xff1a; 在终端输入命令&#xff08;位置是项目目录下&#xff09; git push origin feature_mo2.1_r3_zhanx653 -f

深圳三维扫描分析/偏差检测模具型腔三维尺寸及形位偏差测量公司

CASAIM中科广电三维扫描模具型腔深圳案例&#xff1a; 模具型腔的三维扫描分析/偏差检测是一项重要的质量控制过程&#xff0c;旨在确保模具制造过程中的精确度和一致性。 CASAIM中科广电通过使用高精度的三维扫描设备&#xff0c;可以获取模具型腔的实际形状和尺寸数据&…

Python - 深夜数据结构与算法之 LRUCache

目录 一.引言 二.LRU Cache 简介 1.实现特性 2.工作流程 三.LRU Cache 实战 1.HashMap ListNode 2.OrderedDict 四.总结 一.引言 LRU 即 Least Recently Used 意为最近使用&#xff0c;它是一种局部 Cache 的缓存方法&#xff0c;用于存储最近使用的元素&#xff0c;…

Java 实现双链表

文章目录 双链表&#xff08;Doubly Linked List&#xff09;是一种常用的数据结构&#xff0c;它与单链表相似&#xff0c;但每个节点除了包含指向下一个节点的指针外&#xff0c;还包含一个指向前一个节点的指针。 双链表的节点由三部分组成&#xff1a;数据域&#xff08;存…

多线程应用场景

一 讨论多线程应用场景 现在很多高级语言都可以很方便的实现多线程&#xff0c;多线程实现很简单&#xff0c;易使用&#xff0c;反而因对多线程的应用场景不是很理解而乱用。 就从身边的事说起&#xff0c;甲同事提出他的一个接口因查询数据库近接近20多秒&#xff0c;于是马上…

Sentinel 轨道数据及下载

Sentinel卫星轨道文件在处理Sentinel卫星数据时发挥着关键作用。这些轨道文件包含了有关卫星在轨道上的运动、位置、姿态等信息&#xff0c;对于地理校正、成像几何校正以及多时相分析等方面具有重要作用。以下是Sentinel卫星轨道文件的主要作用&#xff1a; 地理校正&#xff…

【机器学习300问】8、为什么要设计代价函数(损失函数)?它有什么用?

一、先介绍一下线性回归模型 &#xff08;1&#xff09;基本概念理解 文字解释&#xff1a;线性回归模型顾名思义&#xff0c;他处理的回归问题&#xff0c;是监督学习的一种。线性回归模型是一种预测模型&#xff0c;其基础是假设目标值和输入值之间存在线性关系。通过一条最…