Springboot @Value注解的场景用法以及可能遇到的问题

Python学生管理系统+MySQL+tkinter+pyinstaller(终章)(1) 文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取! 阅读详情

@Value注解可以通过#{}和${}等2中方式使用,其作用通常如下:

@Value(“#{}”) 表示SpEl表达式通常用来获取bean的属性,或者调用bean的某个方法。当然还有可以直接表示常量。

用@Value(“${}”)注解一般从配置文件读取属性。

1 非配置文件注入

1.1 用法

通过@Value将外部的值动态注入到Bean中,常见用法如下:

  • 注入普通字符串
  • 注入操作系统属性
  • 注入表达式结果
  • 注入其他Bean属性
  • 注入beanInject对象的属性another
  • 注入文件资源
  • 注入URL资源

非配置文件注入在实际开发场景中使用的较少,@value大部分情况注入配置文件中的属性

1.2 示例

注入普通字符串

直接附在属性名上,在 Bean 初始化时,会赋初始值。

@Value("admin")
private String name;

注入系统属性

@Value("#{systemProperties['os.name']}")
private String osName;

注入其他bean的属性

注入User对象中的属性userName

@Value("#{User.userName}")
private String userName;

注入文件资源

@Value("classpath:com/ndtest/spring/configinject/config.txt")
private Resource resourceFile;

注入URL资源

@Value("http://www.baidu.com")
private Resource testUrl;

2 配置文件注入(重点)

SpringBoot 通过 @Value 注解将配置文件中的属性注入到容器内组件中(可用在 @Controller 、@Service 、@Configuration、@Component 等Spring托管的类中

1.注入普通字符串

在 application.properties 配置文件中有如下配置:

userName=zhaoyp

我们可以使用@Value注解注入属性:

@Value("${userName}")
public String userName;

2.注入基本类型(最常使用)

这次我们使用yml文件作为配置文件,假设application.yml文件中定义了服务器的基本配置

client:
  ipAddr: 222.95.84.124
  sshPort: 22
  sshUser: root
  sshPass: Test!@#123

我们可以通过@Value注解注入属性

    @Value("${client.ipAddr}")
    private String ipAddr;

    @Value("${client.sshPort}")
    private Integer sshPort;

    @Value("${client.sshUser}")
    private String sshUser;

    @Value("${client.sshPass}")
    private String sshPass;

3.注入数组、List类型

假设配置文件如下:

ids=1,2,3
// 注入数组类型
@Value("${ids}")
public int[] arrIds;

// 注入List
@Value("#{'${ids}'.split(',')}")
public List<String> listIds;

3 @Value注解获取不到值的常见问题

1 使用static或者final修饰了tagValue

错误示范如下:

@Value("${ftpIP}")
private static String ftpIP; 

@Value("${ftpUserName}")
private final String ftpUserName;

解决办法是移除static或final关键字。 

2 使用该注解的类上面没有加注解

没有加注解即不能被spring管理(类没有加上@Component(或者@service等))

错误示范如下:

public class FTPManagerService { 
 @Value("${ftpIP}")
 private static String ftpIP; 
}

正确案例:

@Component // 检查注解是否遗漏
public class FTPManagerService { 
 @Value("${ftpIP}")
 private static String ftpIP; 
}

3 使用new关键字新建了实例,而没有使用@Autowired

错误用法以及正确案例如下 

public class FTPManagerService { 
 @Value("${ftpIP}")
 private static String ftpIP; 
} 


public class Test{
    /*错误用法*/
    FTPManagerService  f = new FTPManagerService ();
 
    /*正确用法*/
    @Autowired
    FTPManagerService  f2;
}

以上便是@Value注解的使用方法以及踩坑案例,希望能帮到大家~

SpringBootSpring项目中value注解@Value不能够读取到配置文件的值,无法成功注入值的问题汇总及解决 Spring项目中value注解@Value不能够读取到配置文件的值,无法成功注入值的问题汇总及解决 @Value注解 常规用法示例 我们都知道通过@Value()注解可以取到我们配置文件的内容,之后我们通过修改配置文件就可以修改我们@Value注解修饰的属性 FileController .java @Controller public class FileController { ... 阅读详情

相关推荐

SpringBoot】90、SpringBoot@Value(“${...}“)的使用细节

@Value 注解可以用来将外部的值动态注入到 Bean 中,注入配置文件中的配置参数、注入文件资源、注入URL资源等,我们还可以使用自定义注解实现统一注入管理

JACKAL 3万+

Spring@Value注解详解

一种就是使用Spring@Value注解,还有一种是使用SpringBoot中的@ConfigurationProperties注解,本篇文章主要是介绍常用的第一种方式。第二种@Value(“#{}”)是用来表示 SpEl 表达式通常用来获取 bean 的属性,或者调用 bean 的某个方法。@Value 注解有两种方式,@Value(“${}”)和@Value(“#{}”)两种方式。第一种 @Value(“${}”)是用来获取配置文件。

Rocky balboa 5381

springBoot@Value()用法

springBoot @Value()的使用

hyj 878

@Value注解中${}和#{}的运用

@Value(“#{}”) 表示SpEl表达式通常用来获取bean的属性,或者调用bean的某个方法。当然还有可以表示常量 用 @Value(“${xxxx}”)注解从配置文件读取值的用法 一、 @Value(“#{}”) 1 @Value(“#{}”) SpEL表达式(https://blog.csdn.net/ya_1249463314/article/details/68484422) @Value(“#{}”) 表示SpEl表达式通常用来获取bean的属性,或者调用bean的某个方法。当然还有可以表

weixin_39145487的博客 1万+

SpringBoot @value注解动态刷新

SpringBoot @value注解动态刷新

菜鸟记录 4991

spring boot @Component无效注解 @Value取值取不到问题

@Component无效注解 springboot 加载的时候,使用该注解的类一定要放在接口同级,或者下级包里面,不然是无法进行扫描的,比如接口放在com.xxx.yyy下面,而使用@component的类放在com.xxx.zzz下面,这样子是无法扫描的 如下图 所以要在启动类上添加扫描包注解@ComponentScan(basePackages = {“com.test.demo.server”}) @SpringBootApplication @ServletComponentScan//防止 @W

SugarXiXixi的博客 1万+

springbootspringboot 注解|@Value注解

@Autowired @Autowired用法详解:https://www.cnblogs.com/fnlingnzb-learner/p/9723834.html https://www.cnblogs.com/caoyc/p/5626365.html 非常好值得阅读 @Component: 这将 java 类标记为 bean。它是任何 Spring 管理组件的通用构造型。sprin...

我的笔记本 933

@value注解

Spring@Value作用于静态变量_value注解静态变量-CSDN博客基于配置文件的注入基于非配置文件的注入注入普通字符串注入操作系统属性注入表达式结果注入其他bean属性注入URL资源(1)@Value("${}"):可以获取对应属性文件中定义的属性值。(目前只是用它来获取配置文件可以加载多个属性文件,并且后加载的文件会覆盖前一个文件中相同的 key。这个特性非常适用于根据不同的环境(开发、生产、测试等)加载不同的配置。加载文件的路径也可以配置变量,

qq_52122048的博客 1640

springboot 注解动态赋值_SpringBoot 注解@Value的各种条件下使用方法

使用环境:系统在开发和正式运营之间的环境不相同,每一次部署服务器都需要更改相关配置,感觉比较麻烦。因为springboot框架之前已经配置了多环境运行,所以就想使用@Value这个注解,将环境变量写在配置文件中,让他根据运行的环境进行读取。期间遇到@Value的各种使用问题,就记录下来,别忘记了...正常使用yml配置文件部分# 自己配置的参数savePath : /Users/a/Desktop...

weixin_32286661的博客 4913

Spring@Value注解

Value注解Spring的依赖注入中占据重要地位,这里对@Value注解的作用进行演示以及扩展。

好记性不如烂笔头 2108

解决启动SpringBoot项目加载 @Value注解报异常问题

在开发的过程中很多时候我们需要用到公共配置组件,@Value注解就是开发中常用到的工具,但是该注解使用不当很容易出现错误,查阅资料后总结了以下几种解决方案。

一宿君 1万+

Springboot @Value注解

作用:@Value注解主要用于是将配置文件中的键对应的值分配给某类内带注解的属性。文件中的配置项,如果需要读取其它配置文件中的配置项,需要使用。注解将配置文件中的属性注入到容器内组件中(可用在。被赋予了一个初始的值,该值是JAVA的系统变量。主要使用在于从配置文件中读取相对应的配置项,同时也可以在注入属性设置相对应的默认值,参数代表需要配置文件中的键或是值。为空时,此时host的值 为。从测试结果可以看出,此时。配置文件中添加以下配置项。2、配置文件注入,通过。从输入结果中可以看出,1、非配置文件注入,

小猿聊编程 5347

注解详解系列 - @Value:属性注入的利器

在今天的注解详解系列中,我们将探讨@Value注解@ValueSpring框架中的一个重要注解,用于将外部属性注入到Spring的bean中。通过@Value注解,可以将配置文件中的值、系统属性、环境变量等注入到bean的字段中。@Value注解用于将外部属性注入到Spring的bean中。它支持注入字符串、数值、布尔值等基本类型,以及通过SpEL(Spring表达式语言)进行复杂的表达式注入。import org。

算命de博客 4579

菜鸟的springboot常用注解总结

菜鸟的springboot常用注解总结说明@SpringBootApplication@Component,@Service,@Controller,@Repository@ResponseBody@RestController@AutoWired 说明 更新时间:2020/7/14 17:32,更新了整体内容 本文主要对网上的springboot常见注解和自己本人在学习的过程中遇到的注解的一次总结,本文会持续更新,不断地扩充 本文仅为记录学习轨迹,如有侵权,联系删除 @SpringBootApplicat

最强菜鸟 7万+

SpringBoot常用注解

1、@SpringBootApplication 包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主类上; 2、@Component、@Service、@Controller、@Repository 这几个注解放在一起是因为功能基本一样的,都是将类注入到spring容器中,只不过它们使用的场景不同,被@Component,@Service,@Controller,@Repository注解标注的类,这些类会被纳入进spring容器中

jike11231的博客 1万+

Springboot常用注解大全

springboot注解:@Service: 注解在类上,表示这是一个业务层bean@Controller:注解在类上,表示这是一个控制层bean@Repository: 注解在类上,表示这是一个数据访问层bean@Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写@Autowired:按类型注入.默认属性required= true;当不能确定 Sprin...

yitian_66的博客 7万+

SpringBoot@Value 注解

注解用途特点@Value注入配置值或表达式结果简单易用,适合字段级注入将一组配置映射为对象更适合结构化配置管理。

Java的专栏 839

SpringBoot 的 Controller 层常用注解

ControllerAdvice 是 @Controller 注解的一个增强,这个注解Spring 里面的东西,可以处理全局异常。标识了 @ExceptionHandler 注解的方法,返回值类型和标识了 @RequestMapping 的方法是统一的,可参见 @RequestMapping 的说明,比如默认返回 Spring 的 ModelAndView 对象,也可以返回 String,这时的 String 是 ModelAndView 的路径,而不是字符串本身。这样就保证了账户的安全。...

m0_67698950的博客 8012
上一篇: OJ在线编程常见输入输出练习(Java版本)
下一篇: 在CentOS 7中挂载NTFS USB驱动器
NJUPT_zhaoyp
博客等级 码龄7年 78粉丝 20原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值