Spring-IOC
IOC:把创建对象、赋值的工作交给容器实现,也就是对象的创建是由外部资源实现(容器创建对象)
1.控制:创建对象,对象的属性赋值,对象之间的关系管理
2.反转:
正转:由于开发人员在代码中,通过new一个对象,开发人员主动管理。
反转:把创建对象的权限给容器管理,给对象赋值
作用:在不修改代码的情况下,能够让这个对象拥有不同的功能,修改对象更容易一些,不把对象写死
servlet:也实现了ioc,列如BaseController
IOC的技术实现,
DI 是ioc的技术实现,
DI:依赖注入,子需要在程序中提供使用的对象名称就可以,至于这个对象如何创建、赋值、
查找都由容器内部实现。
DI的实现:1.通过xml配置来实现 2.通过注解来实现
spring底层创建对象,使用的是反射机制
spring创建对象: 是由spring的配置文件实现,声明bean ,就是告诉spring要创建哪个对象
示例:
1.使用ApplicationContext 就是spring的容器,然后通过获取某个对象
String config="beans.xml" //配置文件的名称
ApplicationContext ac=new ClassPathXmlAppclicationContext(config);//创建spring容器
ac.getBean("配置文件中bean的id值");//完成获取对象------可以创建自定义和非自定义的对象,由xml配置
注意在创建spring容器的时候,会创建配置文件中所有的对象,也是会new所有的对象
说明:spring的ioc,ioc目的是控制反转依赖注入。与工厂模式类似,不同的是工厂是在类中定义死,如果修改的话还需要修改Java代码,重新编译,而ioc则不需要,只要在xml修改属性就行,由于
ioc底层用到反射机制动态生成对象,效率上还比工厂模式快一些。
spring容器,当作控制的反转,容器的方法,可以理解为注入的方法
Spring依赖注入的方式主要有四个,基于注解注入方式、set注入方式、构造器注入方式、静态工厂注入方式。
什么是反射?
反射是一种能够在程序运行时动态访问、修改某个类中任意属性(状态)和方法(行为)的机制
在ioc就是用反射来 通过类的路径(就是个字符串)来new一个类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!