在Spring中有两个非常重要的概念,那就是控制反转和依赖注入;控制反转将依赖对象的创建和管理交由Spring容器,而依赖注入则是在控制反转的基础上讲Spring容器管理的依赖对象注入到应用之中;那么控制反转和依赖注入的原理到底是什么呢?一言以蔽之,那就是:
XML文件解析+Java反射技术;
只要我们了解了如何进行XML解析以及Java的反射技术,那么我们完全可以实现自己的具有控制反转和依赖注入功能的小“框架”;下面我将就这个问题进行一下讨论。
首先是XML文件解析,我们都知道目前很多Java开源框架都有自己的xml配置文件,例如Struts、Hibernate和Spring都有各自的配置文件。但是配置文件无论多么复杂,简单来说都和我们在N久以前使用的ini文件差不多,他们的目标只有一个,那就是“配置”;应用程序中需要的一些信息都被保存在配置文件之中,应用程序通过读取配置文件来获得这些信息,唯一不同的是,xml文件由于其标准化、结构化、可扩展性等等优点,逐渐成为目前许多框架的配置文件的标准选项;当然,我们也应该认识到还是有一些其它选择的,比如Hibernate就可以使用properties文件作为配置文件;
那么具体到今天要讨论的Spring框架而言,对于配置文件的选择是xml文件。根据Spring的规范,配置文件的命名是没有特殊要求的,只是在文件的放置位置上有两种选择:类路径下或者操作系统文件目录下,我想这不应该存在任何问题,我们绝大多数情况都应该把配置文件放置在类路径之下,这我就不赘述了。
对于Spring的控制反转和依赖注入来说,唯一使用到的是配置文件中的<bean>标签,通过这个标签,Spring就完成了对象的创建和依赖对象的注入工作;下面我们就来看看它到底是如何实现的;
- 首先对于配置文件中的<bean>节点,在Spring框架中存在一个对应的定义接口,叫做BeanDefinition;这个类定义了获得在<bean>节点中出现的所有属性的方法,例如className、scope等等;
- 对于<bean>节点的子节点property则完成了属性注入的功能;我们都知道,属性注入有三种方式,那就是构造器注入、属性setter方法注入和注解方式注入;
- 如果是setter方式注入,对于类属性xml配置文件也有两种方法,一是使用property节点的ref属性,一是使用property节点的子节点bean进行内部bean配置;如果是对于基本数据类型进行配置,那么要使用property节点的value属性;
搞清楚了以上的配置,那么如果我们希望实现一个自己的“小框架”,那么我们的步骤就是:
- 定义自己的关于bean节点、property节点的pojo类文件;
- 使用诸如DOM4J等开源包将配置文件读入;
- 使用Java的反射技术将配置文件中的信息setter到我们需要的属性中去;这里面我们可能要使用到common-beanutils.jar包;
分享到:
相关推荐
spring 控制反转和依赖注入进行基础知识的生命周期、延迟初始化、装配方式等进行案例总结使用。从而对spring基础知识更加理解。
Spring 控制反转和依赖注入
spring的控制反转和依赖注入详解
NULL 博文链接:https://slnddd.iteye.com/blog/1756411
自定义spring实现读取applicationContext.xml并依赖注入,可以参考学习控制反转的原理,非常简单。
springIOC 小例子 附带源码 适合新手学习
此文档仅供初学者学习,包括Spring的依赖注入(控制反转)的详细实例。以三层贯穿实例(持久层、业务层、控制层),由MAIN方法直接调用测试用例。
IOC与DI的理解及使用 控制反转IOC(Inversion of Control)是一种设计思想,DI(依赖注入)是实现IOC的一种方法 。... 在Spring中实现控制反转的是IOC容器 ,其 实现方法是依赖注入 (Dependency Injection,DI)
javaEE 开发中 现在最成熟的框架之一应该就是spring了 spring框架最强大的地方就是实现了依赖注入 也叫控制反转 最近的一个项目中用的就是 spring框架 spring框架是工厂模式的应用结合了MVC的设计思想 大家可以...
主要介绍了Java的Spring框架中的控制反转和依赖注入,Spring是Java的SSH三大web开发框架之一,需要的朋友可以参考下
它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制...
1.2 IoC(控制反转)和DI(依赖注入)入门 1 传统的Java类 在工程下创建包ioc,在ioc包中创建类Test。(为了看起来清楚,将三个类写在了同一个Java文件中,其中唯一的public类为Test)。类的含义和关系如下: Car类...
此文档仅供初学者学习,包括Spring的依赖注入(控制反转)的详细实例。以三层贯穿实例(持久层、业务层、控制层),由MAIN方法直接调用测试用例。
主要介绍了理解Spring中的依赖注入和控制反转,具有一定参考价值,需要的朋友可以了解下。
它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制...
本文介绍了Spring框架中的控制反转IOC和依赖注入DI,欢迎阅读,共同学习,一起进步。 Spring框架基础参考:深入学习Spring基础 文章目录一.入门程序和IOC简介二.IOC-控制反转三.DI-依赖注入四. IOC和DI五.Spring...
① IoC(Inverse of Control)–> 控制反转 IoC理念: 对象的创建工作交给IoC容器 对象间的依赖关系交给IoC容器查找,在运行期间确定 依赖注入是IoC的主要实现方式 IoC的实现机制: 工厂模式 + 反射机制:工厂模式...
它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC(依赖注入,也称控制反转)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复...
控制反转(IoC)/依赖注入(DI) 11 什么是控制反转/依赖注入? 11 依赖注入的三种实现形式 12 BeanFactory 14 BeanFactory管理Bean(组件)的生命周期 15 Bean的定义 16 Bean的之前初始化 19 Bean的准备就绪...
NULL 博文链接:https://136812218.iteye.com/blog/1591606