Spring中的依赖注入DI详解
更新时间:2024年01月08日 09:42:37 作者:nsnsttn
这篇文章主要介绍了Spring中的依赖注入DI详解,组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将依赖关系注入到组件之中,依赖注入的目的并非为软件系统带来更多功能,是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台,需要的朋友可以参考下
spring自动注入的方式
xml方式
手动:
- set方法注入
<bean name ="orderService" class ="com.zzy.service.OrderService"> </bean> <bean name ="userService" class ="com.zzy.service.UserService"> <property name="orderService" ref= "orderService"></property> </bean>
- 构造器注入
<bean name ="orderService" class ="com.zzy.service.OrderService"> </bean> <bean name ="userService" class ="com.zzy.service.UserService"> <constructor-arg index="0" ref= "orderService"/> </bean>
- p标签注入
不常用略
自动注入:
<bean name ="orderService" class ="com.zzy.service.OrderService"> </bean> <!--autowire 默认五种方式(ByType,ByName,default,no,constructor), byType:根据类型去容器寻找 ByName:找set方法,去除Set后的名称去容器中寻找 no:默认 --> <bean name ="userService" class ="com.zzy.service.UserService" autowire = "byType"> </bean>
spring注解方式(常用)
- 属性注入
- 方法注入
- 构造器注入
直接看代码
package com.zzy.zzyNotes.spring.DI依赖注入; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; /** * @author: zzy * @createDate: 2022-01-07 15:28 * @description: * spring依赖注入的方式 * 1.属性注入 * 2.方法注入 * 3.构造器注入 * @Autowired 先根据Type,在根据名字注入,可以放在属性.普通方法,构造方法上 * * @Resource 根据名字注入,可以放在属性.普通方法上 * * @Qualifier 指定注入Bean的名字,可以放在属性.普通方法(单参数),普通方法形参前,构造方法形参前 * * @Primary 相同类型的Bean的优先级最高 */ @Service public class UserService { //一:属性注入 ------------------------------------------------------------------------------------------------------- //接口 @Autowired //@Autowired先根据Type,在根据名字 @Qualifier("ticketsOrderService") //指定寻找的名字 private OrderService orderService; //类 @Autowired //@Autowired先根据Type,在根据名字 private GoodsOrderService goodsOrderService; //二:方法注入不一定是set方法) ----------------------------------------------------------------------------------------- //使用方法注入 //这个我们想指定注入水果Bean //方式有三种 //1.@Primary FruitsOrderService上加@Primary //2.@Autowired 配合 @Qualifier("fruitsOrderService") @Qualifier可以加在参数前面 //2.@Resource(name = "fruitsOrderService") 根据name注入 private OrderService fruitsOrderService; private OrderService goodsOrderService2; @Autowired //@Resource(name = "fruitsOrderService") public void fruits(OrderService orderService,GoodsOrderService goodsOrderService) { this.fruitsOrderService = orderService; this.goodsOrderService2 = goodsOrderService; } //三:构造方法注入 ----------------------------------------------------------------------------------------- //构造方法注入meatOrderService,啥也不加会注入fruitsOrderService,因为@Primary.需要用@Qualifier("meatOrderService")指定 private OrderService meatOrderService; @Autowired public UserService( OrderService orderService) { this.meatOrderService = orderService; } public UserService() { } /** * 查询注入的Bean */ public void getBean() { System.out.println(orderService); System.out.println("属性注入 --------"); System.out.println(goodsOrderService); System.out.println("属性注入 --------"); System.out.println(fruitsOrderService); System.out.println("方法注入 --------"); System.out.println(goodsOrderService2); System.out.println("方法注入 --------"); System.out.println(meatOrderService); System.out.println("构造器注入 --------"); } }
spring @Autowired自动注入的流程
spring自动注入的流程(简)
添加了@Autowired的会被标记为注入点,注入点两种
1.属性
2.方法
遍历所有的注入点
先通过Type,在根据Name寻找容器中的Bean,找不到就创建,找到后通过反射给Bean的属性赋值.静态属性不会赋值
到此这篇关于Spring中的依赖注入DI详解的文章就介绍到这了,更多相关Spring依赖注入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解Spring中InitializingBean接口的功能
这篇文章主要介绍了Spring中InitializingBean接口的功能,讲述了spring中InitializingBean接口的功能简介说明,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-05-05springboot2.0和springcloud Finchley版项目搭建(包含eureka,gateWay,Fre
这篇文章主要介绍了springboot2.0和springcloud Finchley版项目搭建(包含eureka,gateWay,Freign,Hystrix),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-05-05JAVA使用commos-fileupload实现文件上传与下载实例解析
这篇文章主要介绍了JAVA使用commos-fileupload实现文件上传与下载的相关资料,需要的朋友可以参考下2016-02-02Java中的数组流ByteArrayOutputStream用法
Java中的ByteArrayOutputStream是java.io包中的一个类,用于在内存中创建字节数组缓冲区,支持动态扩展,它继承自OutputStream,允许以字节形式写入数据,无需与外部设备交互,常用方法包括write()、toByteArray()、toString()等2024-09-09
最新评论