
Spring知识小汇(2)—— IOC理论推导(IOC本质、HelloSpring、IOC创建对象的方式)
发布日期:2021-05-07 08:59:23
浏览次数:20
分类:技术文章
本文共 1898 字,大约阅读时间需要 6 分钟。
文章目录
IOC理论推导
在之前的业务中,用户的需求可能会影响我们原来的代码,我们需要修改原来的代码!如果工程量浩大,修改起来是十分的麻烦。
可以通过使用set接口实现,此时不用修改原来的代码,只需调用者,通过自己的需求来调用不同的实现。
public class UserServiceImpl implements UserService { private UserDao userDao ; //利用set实现动态注入 public void setUserDao(UserDao userDao) { this.userDao = userDao; } public void getUser() { userDao.getUser(); }}
- 使用动态注入后,使用权掌握在调用者手上而不是程序猿手上
- 使用set注入后,程序不再具有主动性,而变成了被动的接受对象
这种思想,从本质上解决了问题,程序员不用再去管理对象的创建。系统的耦合性大大降低,可以更加专注的在业务上实现!这就是IOC的原型!
IOC本质
控制反转IOC,是一种设计思想,DI(依赖注入)是实现IOC的一种方法,也有人任务DI只是IOC的另一种说法。没有IOC的程序中,我们使用面向对象编程,对象的创建与对象之间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓的控制反转就是:获得依赖对象的方式反转了
采用XML方式配置bean的定义信息和实现分离的,而采用注解的方式可以把两者合为一体,bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置
控制反转是一种通过描述(XML或注解)并通过第三方生产或获取特定对象的方式。在Spring中实现控制反转的的是IOC容器,其实现方法是依赖注入(DI)
HelloSpring
pojo
public class Hello { private String str; @Override public String toString() { return "Hello{" + "str='" + str + '\'' + '}'; } public String getStr() { return str; } public void setStr(String str) { this.str = str; }}
beans.xml
官网模板
下示例显示了基于XML的配置元数据的基本结构:
test
public class MyTest { public static void main(String[] args) { //获取Spring的上下文 ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); //获取对象 Hello hello = (Hello) context.getBean("hello"); System.out.println(hello); }}
第一个例子的beans.xml的实现
IOC创建对象的方式
-
无参创建
-
有参创建
-
index
-
type
-
name
-
小结:对象的创建会由Spring帮忙完成,我们在测试类中只是获取此对象
如有不对的地方欢迎指出,共同进步!发表评论
最新留言
不错!
[***.144.177.141]2025年04月08日 00时59分38秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
CodeBase(四)项目总结
2019-03-04
【ACM】HDU 5640 King‘s Cake
2019-03-04
java集合框架
2019-03-04
面向对象的三大特征
2019-03-04
SpringCloud和SprinBoot之间的关系
2019-03-04
奇怪的小东西
2019-03-04
剑指offer打卡Day14:数组中只出现一次的数字
2019-03-04
使用VSCode配合keil来编写Cortex-M程序
2019-03-04
电磁兼容的PCB设计(二)
2019-03-04
i.mx rt系列遇害笔记-----systick被gpio害了
2019-03-04
零输入响应与零状态响应响应
2019-03-04
工资核算
2019-03-04
【keras】利用LSTM做简单的时间序列预测
2019-03-04
绘图杂记【7】echarts / python 雷达图
2019-03-04
Python之GUI编程 实现界面化的词云图生成器.exe
2019-03-04
PySpider 框架基本使用(存入MYSQL)
2019-03-04
绘图杂记【19】Echarts 可视化图
2019-03-04
教程七:Centos7.7安装redis教程
2019-03-04
maven打包可执行文件jar
2019-03-04
springboot 图片大小压缩
2019-03-04