【Spring】@Autowired、@Resource、@RequiredArgsConstructor 的使用、区别、最佳实践

本文详细介绍了Spring框架中@Autowired、@Resource注解的使用和区别,以及lombok的@RequiredArgsConstructor构造器注入。强调了@Autowired与@Resource在注入方式上的差异,并提供了常见问题的解决方案,如Bean注入为null的排查步骤。最后,给出了Spring注入的最佳实践建议。
摘要由CSDN通过智能技术生成

Spring 的核心是Ioc容器和DI(Dependence Injection)思想,这些提供了 java 对象的管理以及他们之间依赖的管理。bean 的管理是Spring自动管理的,而我们只需要使用一些注解(Annotion)。

常用的是 @Resource 和 @Autowired 以及 lambok 的构造器进行注入。

使用

注入前对象必须由 Spring 管理。通过 @Component、@Service、@Repository 标识,Springboot会自动扫描并初始化 Bean。

@Autowired
    @Autowired
    private UserMapper userMapper;

如果Bean出现了重复,在项目中通常使用@Qualifier单独指定bean. 注意: @Qualifier不能单独使用只能配合@Autowired使用。

    @Autowired
    @Qualifier(value = "userMapper")
    private UserMapper userMapper;

@Autowired 可以放在成员变量(field),setter、类构造器。它只有一个属性 —— required,Boolean类型,取值为false时不依赖bean,也就是说被注入field可以为null,否则当依赖bean不存在时报错。

// Autowired 构造器注入
class UserServiceImpl{
   
    private UserMapper userMapper;
    private DeptMapper deptMapper;
    
    @Autowired
    public UserServiceImpl(UserMapper userMapper, DeptMapper deptMapper){
   
        this.userMapper = userMapper;
        this.deptMapper = deptMapper;
    }
}

// Autowired Setter 注入
class UserServiceImpl{
   
    private UserMapper userMapper;
    
    @Autowired
    public void 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值