Java随笔 | Spring项目中三种常用的依赖注入注解:@Value、@Autowired、@Resource


在Spring或Springboot项目中,时常需要使用注解完成变量的依赖注入,多使用在controller层和service层上,依赖注入的注解有4个,本文介绍其中常用的3种,未介绍的注解是@Qualifier,可自行学习了解。
本文面向初学者,故只介绍最基础的用法,力求简单清晰。

一、@Value

@Value注解的成员变量通常为基本数据类型及其包装类,以及String类型,用于直接给该变量赋值。
常用于从*.properties*.yml配置文件中取值并注入。
示例:

  • yml配置文件
# properties.yml配置文件存放属性
configVar:
  var1: abcd # 这是一个字符串
  var2: 1234 # 这是一个整数
  var3: true # 这是一个布尔值
  • Spring项目
// Spring(boot)项目中给变量注入值
public class TestController {
	@Value("${configVar.var1}")
	private String var1;
	
	@Value("${configVar.var2}")
	private Integer var2;
	
	@Value("${configVar.var3}")
	private Boolean var3;
	...
}

@Value也可以注入数组、List等java自带类型,可参考:
https://blog.csdn.net/wangooo/article/details/114018690

二、@Autowired

@Autowire作用在自定义的成员变量上,自动装配,使用的是byType策略,即根据变量类型从ioc容器中查找,使用该注解需要在对应的类上挂以下注解中的一个(以将对象注入ioc容器):

  • @Componet:通用,无语义
  • @Controller:写在控制层(controller)类上
  • @Service:写在业务层(service)实现类上
  • @Repository:写在数据访问层(dao)实现类上
    示例:
  • 数据访问层(dao)实现类
// 在ioc容器中创建该类的对象
@Repository
public class DemoDao {
	...
}
  • 业务层(service)实现类
// @Autowired注解查找DemoDao类型并装配
public class DemoServiceImpl {
	@Autowired
	private DemoDao demoDao;
}

三、@Resource

@Resource作用在自定义的成员变量上,自动装配,先基于byName策略,即根据变量的名称从ioc容器中查找,如果没有找到再使用byType策略装配,该注解不是由Spring官方提供的,而是由EJB框架提供。在Springboot项目中,对应的类可不使用@Componet等注解。
示例:

  • 数据访问层(dao)实现类
// Springboot项目中的Dao
public interface TestDao extends BaseMapper<Test> {
	...
}
  • 业务层(service)实现类
// 使用@Resource注意变量名为类名首字母小写
public class TestServiceImpl extends ServiceImpl<TestDao, Test> implements TestService {
    @Resource
    private UserCartDao userCartDao;
}

@Autowired和@Resource可通用,但推荐使用@Resource。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿林仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值