Spring spring

Spring中文网站 > Spring Modulith > Spring的Resource和Autowired注解 Spring注解中的Value是什么意思
Spring的Resource和Autowired注解 Spring注解中的Value是什么意思
发布时间:2026/03/25 11:34:20

品牌型号:联想ThinkPad X1

系统:Windows10家庭版

软件版本:Spring 5.3.7

新手在刚开始接触Spring注解开发的时候,总是绕不开依赖注入和属性复制这两个概念,碰到@Resource和@Autowired这两个注解以及@Value注解的时候,越学越懵,明明都是自己依赖注入的,但是@Resource和@Autowired用起来总感觉不一样,而@Value注解看起来简单,但是不懂它到底能赋什么值,对着代码里的@Value("${xxx}")完全搞不懂,这些注解是Spring开发的基础,也是面试常常被提到的,@Resource和@Autowired注解的区别主要是在注入规则上,@Value是属性复制的注解,在学习Spring的时候,这几个知识点一定要搞明白,下面就给大家介绍Spring的Resource和Autowired注解,Spring注解中的Value是什么意思的相关内容。

一、Spring的Resource和Autowired注解

我们在Service层调用Dao层代码的时候,使用了Spring的DI依赖注入,Spring提供了setter注入和构造器注入这两个方式。在需要注入依赖的那个类中成员位置添加一个私有属性和公开的setter方法,或者是提供一个公开的有参构造,然后在配置文件中通过property属性,或者constructor-arg标签完成注入。

通过setter方法完成依赖注入
图1:通过setter方法完成依赖注入

我们接触到注解开发后,可以在属性或者是setter方法上添加@Resource注解或者@Autowired注解来进行依赖注入。@Resource注解,如果不配置name属性的话,会先根据当前的属性名或者setter方法名进行注入,如果没有找到匹配的Bean,会降级寻找跟当前属性类型一样的Bean。

使用@Resource注解
图2:使用@Resource注解

Autowired则是根据类型匹配,如果同类型下存在多个Bean,我们可以借助@Qualifier注解的name属性来注入指定名字的Bean。

使用Autowired和Qualifier注解进行依赖注入
图3:使用Autowired和Qualifier注解进行依赖注入

二、Spring注解中的Value是什么意思

上面讲解了@Autowired和@Resource注解的使用,可以用来完成依赖注入,那么大家有没有这么一个疑惑,如果我这会需要给一个属性或者setter方法注入一个普通数据,应该如何操作呢?

Spring也给我们考虑到这一点了,它提供了一个@Value注解用在字段或者方法上注入普通数据。假设这会有个成员变量username,我们给这个变量注入一个值“root”,只需要在这个变量的上面定义一个@Value注解,并且注解中括号填充username的值就可以了,如下图所示:

value注解的基本使用
图4:value注解的基本使用

这么做显然也不合适,等同于把代码写死,不够灵活,我们可以把这些值交给配置文件来管理,例如,在resources目录下创建一个demo.properties文件。

创建配置文件
图5:创建配置文件

在配置文件中填一个demo.username=root,然后我们找到代码中的@Value并使用SPEL表达式从配置文件里将值注入到变量中。

使用SPEL从配置文件读取值
图6:使用SPEL从配置文件读取值

做完这些不要忘记还得把Properties加载进来,如果不加载进来,是会报错的,我们在xml中使用context:property-placeholder标签加载配置文件,就可以让Value从配置文件中读取配置了。

加载配置文件
图7:加载配置文件

以上就是Spring的Resource和Autowired注解,Spring注解中的Value是什么意思的全部内容了。Spring中Resource和Autowired注解都是用于依赖注入的,取代了之前在 XML中配置property和constructor-arg的方式,操作起来比XML中配置要方便很多,而Value注解是用来给变量注入普通数据的,如果要让属性值更灵活,可以在把属性值配置在配置文件中,然后在Value注解中使用SPEL表达式来从配置文件中取值就可以了。

读者也访问过这里:
180 1563 6924