IOC控制反转与DI依赖注入
2023-06-13 09:11:43 时间
大家好,又见面了,我是你们的朋友全栈君。
IOC控制反转与DI依赖注入
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:Intellij IDEA Spring
作者:周欢
撰写时间:2021/1/19
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IOC(控制反转)
- 作用:实现将组件间的关系从程序内部提到外部容器(spring容器)来管理。
- 解释:
- 控制反转IOC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IOC的一种方法。也有人认为DI只是IOC的宁一种说法,没有IOC的程序中,我们使用面向对象编程,对象的创建与对象的依赖关系完全硬编代码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,通俗来讲,控制反转就是获取依赖对象的方式反转了。
- 采用XML方式配置Bean时,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合二为一,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。
- 控制反转是一种通过描述(XML/注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IOC容器,其实现方法是依赖注入(Dependency Injection,DI)
- IOC原型:从本质上解决了问题,程序员不在去管理对象的创建。系统耦合性大大的降低,可以更专注的在业务的实现上!
图像理解IOC:
新建UserDao接口
新建UserDao接口
package com.gx.Dao;
public interface UserDao {
void getUser();
}
新建UserDaoImpl实现类
新建UserDaoImpl实现类
package com.gx.Dao;
public class UserDaoImpl implements UserDao{
public void getUser() {
System.out.println("默认获取用户数据");
}
}
新建UserService业务接口
新建UserService业务接口
package com.gx.Service;
public interface UserService {
void getUser();
}
新建UserServiceImpl业务实现接口
新建UserServiceImpl业务实现接口
import com.gx.Dao.UserDao;
import com.gx.Dao.UserDaoImpl;
public class UserServiceImpl implements UserDao, UserService {
//把dao层引入到业务层
// private UserDao userDao =new UserDaoMysqlImpl();
// 代码弊端:用户每变更一次需求需要手动改变private UserDao userDao =new UserDaoMysqlImpl();中的new对象(UserDaoMysqlImpl)
private UserDao userDao;
//利用set进行动态实现值的注入
public void setUserDao(UserDao userDao){ this.userDao=userDao;}
public void getUser() {
//在业务层里面调用dao层
userDao.getUser();
}
}
新建UserDaoMysqlImpl 业务实现接口
新建UserDaoMysqlImpl 业务实现接口
package com.gx.Dao;
public class UserDaoMysqlImpl implements UserDao {
public void getUser() {
System.out.println("Mysql获取用户数据");
}
}
使用测试类测试一下:
import com.gx.Service.UserService;
import com.gx.Service.UserServiceImpl;
public class MyTest {
public static void main(String[] args) {
//用户实际调用的是业务层,它们不需要接触dao层
UserService userService = new UserServiceImpl();
((UserServiceImpl) userService).setUserDao(new UserDaoMysqlImpl());
userService.getUser();
}
}
运行结果图:
使用反控制转(IOC)之前程序员是注定创建对象!使用反控制转(IOC)之后控制权在程序员手上。
DI(依赖注入)
解释:组件之间的依赖关系由容器在应用系统运行期来决定, 也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。
依赖注入:set注入
依赖:bean对象的创建依赖于容器
注入:bean对象中的所有属性,由容器注入!
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151670.html原文链接:https://javaforall.cn
相关文章
- 控制反转、依赖注入、依赖倒置傻傻分不清楚?
- IPv6/IPv4 + aliddns 实现黑群晖外网控制和访问
- 5620亿参数,最大多模态模型控制机器人,谷歌把具身智能玩出新高度
- 【IOC 控制反转】IOC 简介 ( 依赖注入的两种实现方式 | 编译期注入 | 运行期注入 )
- 【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )
- 如何通俗的理解spring的控制反转、依赖注入、面向切面编程等等详解编程语言
- Linux Pclose:守护进程重新控制终端(linuxpclose)
- 妙用SQLServer 精准控制业务流程(sqlserver_bc)
- 限制Redis实现登录控制的有效方法(用redis怎样做登录)
- Oracle 主控制台有效控制数据库管理(oracle 主控制台)
- 以及语言的控制Oracle数据库中的地址与语言控制(Oracle中地址)
- JS控制对象移动效果
- 根据鼠标的位置动态的控制层的位置