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标准的注解。
posted @   是小陈呀  阅读(678)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示