• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
程序猿林仔
帮助1


在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。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgakffj
系列文章
更多 icon
同类精品
更多 icon
继续加载