依赖注入(DI注入)
2023-04-18 15:23:58 时间
向一个类中传递数据的方法有几种
(1)set方法
(2)构造方法
依赖注入描述了在容器中建立bean与bean之间依赖关系的过程,bean分为两类
(1)引用类型(类)
(2)简单类型(基本数据类型与String)
依赖注入方式
(1)setter注入
(2)构造器注入
代码实现
①setter注入-引用类型
在bean中定义引用类型属性并提供可访问的set方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class BookServiceImpl implements BookService { 2 private BookDao bookDao; 3 4 public void setBookDao(BookDao bookDao) { 5 this.bookDao = bookDao; 6 } 7 }
在配置中使用property小钱ref属性注入引用类型对象
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <bean id="bookService" class="org.wcx.service.impl.BookServiceImpl"> 2 <property name="bookDao " ref="bookDao"/> 3 </bean> 4 <bean id="bookDao" class="org.wcx.service.impl.BookDaoImpl"/>
②setter注入-简单类型
在bean中定义简单类型并提供可访问的set方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class BookServiceImpl implements BookService { 2 3 private int num; 4 private String string; 5 6 public void setNum(int num) { 7 this.num = num; 8 } 9 10 public void setString(String string) { 11 this.string = string; 12 } 13 14 }
配置中使用property标签value属性注入简单类型属性
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <bean id="bookService" class="org.wcx.service.impl.BookServiceImpl"> 2 <property name="num" value="10"/> 3 <property name="string" value="sss"/> 4 </bean>
③构造器注入-引用类型
在bean中定义引用类型并提供可方位的构造方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class BookServiceImpl implements BookService { 2 private BookDao bookDao; 3 4 public BookServiceImpl(BookDao bookDao) { 5 this.bookDao = bookDao; 6 } 7 }
在配置中使用construction-arg标签ref属性注入引用型对象
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <bean id="bookService" class="org.wcx.service.impl.BookServiceImpl"> 2 <constructor-arg name="bookDao" ref="bookDao" /> 3 <!-- name是构造函数里形参的名字--> 4 </bean> 5 <bean id="bookDao" class="org.wcx.service.impl.BookDaoImpl"/>
④构造器注入-简单类型
在bean中定义简单类型属性并提供可访问的构造方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class BookServiceImpl implements BookService { 2 private int num; 3 private String s; 4 5 public BookServiceImpl(int num, String s) { 6 this.num = num; 7 this.s = s; 8 } 9 10 }
在配置中使用construction-arg标签value属性注入简单型属性
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<bean id="bookService" class="org.wcx.service.impl.BookServiceImpl">
<constructor-arg name="num" value="10"/>
<constructor-arg name="s" value="sss"/>
</bean>
相关文章
- 驱动开发实战之TcpClient
- 关于c#多线程中的几个信号量
- C# WPF从后台代码生成行列可变的表格
- 搭建自己的开发框架(一).net core+vue+sqlsugar,(.net6)(前叙之唠叨篇)
- p2p-tunnel 打洞内网穿透系列(四)socks5代理和http1.1代理访问内网ftp服务
- MinIO学习
- .Net 6 WebApi 项目部署到 Linux 系统上的 Docker 容器
- C# WPF后台动态添加控件(经典)
- 探索ABP基础架构-上
- 基于 SkiaSharp 渲染的 Lottie 动画播放器发布,WPF & Avalonia 可用.
- Web Api源码(路由注册)
- WinUI迁移到即将"过时"的.NET MAUI个人体验
- Android Studio安装和使用教程(全文图解)
- 国产ChatGPT大战弱智吧效果实测!网页端小程序均已上线,人人可玩
- 微信小程序--》从零实现小程序项目案例
- 【Uniapp】小程序携带Token请求接口+无感知登录方案
- 【华为鸿蒙3.0/荣耀安卓12使用VMOS Pro的激活方式】
- 【uniapp小程序】上传图片
- 熬夜爆肝万字C#基础入门大总结【建议收藏】
- 瑞吉外卖项目功能全实现及完全代码解析