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标准的注解。

浙公网安备 33010602011771号