- spring IOC (反转控制) ==DI(依赖注入) == BeanFactory
- DI的概念:DI:既让调用类对某一接口实现类的依赖由第三方注入,以移除调用类对某一接口实现类的依赖
- IOC的注入方式:构造\属性\接口注入
- Spring底层是通过java反射机制进行依赖注入的.
- BeanFactory是Spring的基础设施,面向Spring本身;SpplicationContext面向使用Spring框架的开发者
- BeanFactory在初始化容器的时,并未实例化,只要第一次访问某个bean时才实例化目标Bean.
- ApplicationContext 也就是Spring容器;ApplicationContext的初始化应用上下文时就实例化所有单实例的bean.
-
图一详解描述:图一中有4个对象,分别是剧本,剧本导演,剧本角色,角色演员.那么他们之间的关系是怎么样的呢?导演选择剧本,剧本存在角色,角色决定演员.那么我们用常规的代码实现是如何实现的呢?注:这边为了代码的整理,使用了lombok的@Data注解,这个注解 会给标识的类自动构建get,set方法以及无参的构造函数等.
/** * 剧本类 * @author 胖橘 * */ @Data public class Script { private Integer id; private Integer scriptName; //剧本名称 }/** * 导演类 * @author 胖橘 * */ @Data public class Regisseur { private Integer id; private String regisseurName;//导演名字 private Integer scriptId; //剧本id }/** * 角色类 * @author 胖橘 * */ @Data public class Role { private Integer id; private String roleName;//角色名称 private Integer scriptId;//剧本id }/** * 演员类 * @author 胖橘 * */ @Data public class Actor { private Integer id; private String actorName;//演员名字 private Integer roleId;//角色名字 }public class Test { public static void main(String[] args) { //创建<<知否剧本>> Script script=new Script(); script.setId(1); script.setScriptName("知否"); //创建剧本中的女主角明兰 Role role=new Role(); role.setId(1); role.setRoleName("明兰"); role.setScriptId(1); //创建想拍这部剧本的导演 Regisseur regisseur=new Regisseur(); regisseur.setId(1); regisseur.setRegisseurName("张开宙"); regisseur.setScriptId(1); //确定剧本女主角演员 Actor actor=new Actor(); actor.setId(1); actor.setActorName("赵丽颖"); actor.setRoleId(1); } }我们会发现Test中的例子,控制权是在剧本手中的,导演挑选了剧本,剧本控制了角色,角色控制了演员.而SpringIOC做的事情 就是控制反转,也就是由导演去决定剧本,导演决定角色,导演去决定谁来演这部剧.
之前在剧本手中的控制,现在就到了导演手中了.这就是控制反转.以上均摘自于<<精通Spring4.x企业应用开发实战>>
相关文章:
- 【Spring学习】Spring容器 2021-10-12
- Spring学习之IOC 2021-08-30
- Spring(一):基础学习之IOC 2021-11-10
- Spring IoC容器初始化过程学习(最简单的理解IOC容器) 2021-04-25
- Spring学习笔记(三):简述 Spring IoC 容器的实现 2021-09-20
- 学习Spring笔记--Ioc 2021-08-22
- Spring IOC学习笔记 2021-05-09
- spring ioc 第一天学习总结 2021-11-23