Spring框架@Autowired、@Resource、@RequiredArgsConstructor的使用和区别
本文将介绍Spring框架中@Autowired、@Resource和@RequiredArgsConstructor注解的使用和区别。
1. @Autowired
@Autowired是Spring框架中的一个注解,用于实现依赖注入(Dependency Injection,简称DI)。它可以自动装配bean,无需手动创建对象。当Spring容器扫描到使用@Autowired注解的类时,会自动将匹配的bean注入到该类的字段或方法参数中。
使用示例:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class UserService { @Autowired private UserRepository userRepository; }
2. @Resource
@Resource是JavaEE的一个标准注解,也可以在Spring中使用。它的作用与@Autowired类似,也是实现依赖注入。不同之处在于,@Resource默认按照名称进行装配,当找不到与名称匹配的bean时,才会按类型进行装配。如果指定了name属性,则会按照指定的名称进行装配。
使用示例:
import javax.annotation.Resource; import org.springframework.stereotype.Component; @Component public class UserService { @Resource(name = "userRepository") private UserRepository userRepository; }
3. @RequiredArgsConstructor
@RequiredArgsConstructor是一个Lombok提供的注解,用于自动生成构造函数。它会根据类中定义的字段生成一个全参构造函数,并将这些字段作为参数传递给构造函数。这样,我们就可以避免手动编写构造函数,简化代码。
使用示例:
首先,需要在项目中引入Lombok依赖:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> <scope>provided</scope> </dependency>
然后,在类上添加@RequiredArgsConstructor注解:
import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @Component @RequiredArgsConstructor public class UserService { private final UserService userService; }
区别总结
- @Autowired和@Resource都可以实现依赖注入,区别在于@Autowired默认按类型装配,而@Resource默认按名称装配。如果需要按名称装配,可以在字段或方法参数前加上@Resource注解并指定name属性。
- @Autowired是Spring框架提供的注解,而@Resource是JavaEE标准的注解。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库