关于 RequiredArgsConstructor

所谓 Bean 属性注入,简单点说就是将属性注入到 Bean 中的过程,而这属性既可以普通属性,也可以是一个对象(Bean)

@Resource
private UserService userService;


Spring 从 4.0 开始, 就 不 推 荐 使 用 属 性 注 入 模 式 了 ,原因是它可以让我们忽略掉一些代码可能变坏的隐患。

所以,构造器的方法就成了我们的首选。

但是使用构造器注入时,代码会很多。

@Controller
public class UserController {
   
   private UserService userService;
   
   public UserController(UserService userService){
       this.userService = userService;
  }
}

这时我们就可以用 @RequiredArgsConstructor 了

@Controller
@RequiredArgsConstructor
public class UserController {
   
   private final UserService userService;
 
}

把需要注入的属性,修改成 final 类型的(或者使用 @NotNull 注解,不推荐),这些属性将构成默认的构造器。

Java 要求 final 类型的属性必须要初始化,如果没有构造方法代码就会变红。

可以看到修改之后的 IDE,灰色提示也消失了。这样看着也会显得代码简洁一些~

简介
@RequiredArgsConstructor 这个注解可以生成带有必需参数的构造函数。

这个是基于 lombok 的,使用时必须导入lombok包。

需要注意的地方:

必须声明的变量为 final;
​2. 根据构造器注入的,相当于当容器调用带有一组参数的类构造函数时,基于构造函数的 DI 就完成了,其中每个参数代表一个对其他类的依赖。基于构造方法为属性赋值,容器通过调用类的构造方法将其进行依赖注入;


 


 

posted @   河马小海豚  阅读(262)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示