IOC是spring核心部分之一,其重要性不言而喻,故对其做深入了解是很有必要的。
IOC深入了解:
想必各位对IOC的概念看到很多遍,这里还是再说明下,IOC,即Inversion Of Control 控制翻转,比较容易理解的解释是:对象间的依赖关系交由容器负责,无需在应用代码中查找定位。其实真正掌握IOC需要提到另外两个概念:依赖注入、依赖查找,同时也是IOC的两种表现方式。
依赖查找随处可见,如:A、B两个类,A类中需要调用B类的方法,常见的方式就是在A类中new一个B类的对象,则由A类自动查找B类对象。还有一个最直接的例子,就是写EJB客户端调用远程服务,由于EJB是基于JNDI进行查找对象,则需要在客户端写一大堆JNDI获取对象的代码。如:
try { java.lang.Object ejbHome = initialContext.lookup( "java:comp/env/com/mycompany/accounting/AccountEJB"); accountHome = (AccountHome)javax.rmi.PortableRemoteObject.narrow(ejbHome, AccountHome.class);} catch (NamingException e) { // Error getting the home interface ... }
可以明显看到这种方式有以下问题:
1、必须依赖JNDI环境,不能在应用服务器环境之外运行,同时不利于做单元测试;
2、代码逻辑复杂,业务逻辑与底层操作混在一起,难以维护;
相比起来,依赖注入是一种更可取的方式,由容器负责依赖查询,组装对象间的依赖关系
依赖注入有两种方式:构造函数注入和Setter方法注入。
构造函数注入:
public class ConstructorInjection {
private Dependency dep;
public ConstructorInjection(Dependency dep) {
this.dep = dep;
}
}
Setter方法注入:
当容器实例化应用对象之后,就会立即调用后者的setter方法,传入合适的参数。
public class SetterInjection {
private Dependency dep;
public void setMyDependency(Dependency dep) {
this.dep = dep;
}
}
依赖注入基本原则:
IOC的好处
1、查找定位操作与应用代码完全无关,大大提高代码的复用度以及可测试性;
2、代码职责更加分明,只需关注业务逻辑实现;
2、不依赖容器API和特殊接口,降低应用代码对轻量级容器的依赖,方便移植;
相关推荐
spring Ioc容器配置 IOC容器数据源配置 <!-- 配置数据源 --> destroy-method="close"> <value>org.gjt.mm.mysql.Driver <value>jdbc:mysql://localhost:3306/demo <value>root ...
spring ioc容器初始化流程图 spring ioc容器依赖注入流程图 spring aop实现原理流程图
spring ioc指的是控制反转,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。交由Spring容器统一进行管理,从而实现松耦合
SpringIoc示例代码,SpringIoc示例代码,SpringIoc示例代码,SpringIoc示例代码
以注解方式模拟Spring IoC AOP,了解Spring是如何实现的.
spring ioc思维导图,让自己快速、详尽地了解spring ioc知识。
springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC...
spring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demospring ioc模块手写demo...
详细讲解了springioc的各种注入方式以及对应的java方式。讲解了springioc和DI的区别,以及注入特殊复杂的属性
Spring IoC加载流程讲解以及IoC思想和依赖倒置原则
SpringIOC经典Demo,绝对的经典.
Spring Ioc 注解 依赖注入
这是个模拟spring ioc的学习例子,是个java工程。有助于对aop和ioc的理解
Spring IOC基础jar包
spring ioc开发最小依赖包4个,还包含两个辅助包commons-logging.jar和log4j.jar
springioc加载流程图.pdf
spring的ioc容器详细讲解,理解springioc容器
SpringIOC和AOP实现机制模拟,来自与网络。
第一个spring IOC例子(非maven) 方法步骤: 1、下载spring包,提取core,bean,context,expression 四大基础jar http://repo.spring.io/release/org/springframework/spring/ 2、下载common-logging jar ...
Spring IoC源码深度剖析开源架构源码2021.pdf