Spring框架-----DI依賴注入
文章目录
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🔥 1、DI依賴注入
对于 Spring IOC 容器而言我们更多的是使用它的依赖注入。 Spring 创建对象的过程叫
做 IOC,创建对象时给对象属性赋值叫做 DI,所以我们可以认为 IOC 和 DI 是同一个事情。
🌙1.1、什么是依賴注入
DI (Dependency Injection)
:依赖注入是指在 Spring IOC 容器创建对象的过程中,将所
依赖的对象通过配置进行注入。我们可以通过依赖注入的方式来降低对象间的耦合度。
在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护 成本越高,因此对象的设计应使对象之间的耦合越小越好
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🌺1.1.1、类的关系
继承 实现 依赖 关联 聚合
🔦1.1.1.1、依赖关系
【依赖关系】:是一种使用的关系, 即一个类的实现需要另一个类的协助, 所以要尽量 不使用双向的互相依赖
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【箭头及指向】:带箭头的虚线,指向被
🔦1.1.1.2、 聚合( Aggregation)
【聚合关系】:是整体与部分的关系.如车和轮胎是整体和部分的关系.
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。)
【代码体现】:成员变量
【箭头及指向】:带空心菱形的实心线,菱形指向整体
🔦1.1.1.3、 关系强度
继承 = 实现 > 组合 > 聚合 > 关联
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🌙1.2、为什么使用依赖注入
🌺1.2.1、开闭原则
🔦1.2.1.1、 定义
OCP (Open Close Principle): 软件本身应该是可扩展的,而不可修改的。也就是,对扩
展开放,对修改封闭的。
🔦1.2.1.2、 开闭原则优点
1、 易扩展。开闭原则的定义就要求对扩展开放。
2、易维护。软件开发中,对现有代码的修改是一件很有风险的事情,符合开闭原则的设计
在扩展时无需修改现有代码,规避了这个风险,大大提交了可维护性。
🔦1.2.1.3、 高内聚、低耦合
高内聚是指相关度比较高的部分尽可能的集中,不要分散。 低耦合就是说两个相关的模块尽可以能把依赖的部分降低到最小,不要产生强依赖。
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🌙1.3、依赖注入的方法(实例)
在使用依赖注入时,如果注入的是 Bean 对象,那么要求注入的 Bean 对象与被注入的 Bean 对象都需要 Spring IOC
容器来实例化。
🌺1.3.1、实操一、模拟数据库添加数据(通过Set方法注入)
在dao层
在service层,业务逻辑层
在配置文件
id为usersDao的bean对象,装着UsersDaoImpl的对象.
id为UserServiceImpl3的bean对象,装着UsersServiceImpl的对象.
在实际代码中Service层中UserServiceImpl对象依赖dao层中UsersDaoImpl对象
就把Users