1、什么是依赖注入
依赖注入(DI)是IOC 的别称,用于减少对象之间的依赖关系。在依赖注入方面,IOC 至关重要。 IOC(控制反转)是一种设计理念,它将最初在程序中手动创建的对象的控制权转移到Spring 框架。
IOC和DI是同一概念的不同视角。 (IOC是一种思想,DI是该思想的具体技术实现。)也可以理解为: IOC是目标(目标是创建对象),DI是手段(如何获取对象)。外部对象)。
2、依赖注入的常见实现方式
构造函数注入
setter 方法的注入
财产注入
2.1 构造函数注入
在带注释的构造函数的参数中包含所有必需的依赖项,并在构造函数中完成相应变量的初始化。该方法基于构造函数注入。
@RestController
公共类用户控制器{
//构造函数注入
私有UserService 用户服务;
@Autowired
公共UserController(UserService userService) {
this.userService=userService;
}
@RequestMapping(\’/add\’)
公共UserInfo add(字符串用户名, 字符串密码) {
return userService.add(用户名, 密码);
}
}
这种方法的优点:
可注入的不可变对象
注入的对象保持不变
注入的对象已完全初始化
提高多功能性
这种方法的缺点:
如果有太多对象需要依赖构造函数,它们就会变得臃肿。
2.2 setter方法注入
在JavaBean 中,通常通过setXXX() 和getXXX() 方法访问相应的属性。这些setXXX()方法统称为setter方法,而getXXX()方法统称为getter方法。通过setter方法,可以改变对应对象的属性,通过getter方法,可以检索对应属性的状态。
因此,只要当前对象为其依赖对象对应的属性添加setter方法,就可以通过setter方法将对应的依赖对象设置为插入的对象。
@服务
公共类用户服务{
私人短信服务SMSService;
@Autowired //通过setter方法注入
公共无效setWolf3Bean(SmsService smsService){
this.smsService=smsService;
}
}
这种方法的优点:
每个Setter 仅针对一个对象,因此它完全遵循单一责任设计原则。
这种方法的缺点:
不可变对象(最终被修改的对象)无法插入
可以修改注入的对象
2.3 属性注入
属性注入是使用bean变量上的注释来注入依赖项。
属性注入是我们最熟悉的一种,日常开发中最常用的注入方式有:
@RestController
公共类用户控制器{
//属性对象
@Autowired
私有UserService 用户服务;
@RequestMapping(\’/add\’)
公共用户信息添加(字符串用户名,字符串密码){
return userService.add(用户名, 密码);
}
}
这种方法的优点:
便于使用
这种方法的缺点:
不可变对象(最终被修改的对象)无法插入
可以修改注入的对象
仅适用于IoC 容器
3、总结
在实际开发中,根据不同的场景选择不同的注入方式。简单来说,就是
使用构造函数方法来强制依赖关系。
使用setter 插入可选变量依赖项。
不过日常开发需要插入更多的属性~
文章转载自《一片叶子的一生》
原文链接:https://www.cnblogs.com/anboy/p/18281768
试用地址:英迈-JNPF 高速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流程引擎_软件架构
以上关于#Spring的三种依赖注入方式的相关内容来源仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92935.html