一.IoC的主要组件:

(1).Spring框架的两个最基本和最重要的包是org.springframework.beans.factory(该包中的主要接口是BeanFactory)和org.springframework.context包(该包中的主要接口是ApplicationFactory)。这两个包中的代码提供了Spring IoC特性的基础。

(2).Spring IoC框架的主要组件有:Beans、配置文件(beans.xml或applicationContext.xml)、BeanFactory接口及其相关类、ApplicationContext接口及其相关类。

(3).下面分别介绍IoC主要组件技术:

Beans:Beans是指项目中提供业务功能的Bean,即容器要管理的Bean。Beans就是一个常见的JavaBean,Java类。

配置文件(beans.xml或applicationContext.xml):是用来装配Beans的。

— 在Spring中对Bean的管理是在配置文件中进行的。在Spring容器内编辑配置文件管理Bean又称为Bean的装配;实际上装配就是告诉容器需要哪些Bean,以及容器是如何使用IoC将它们配合起来。

— Bean的配置文件是一个XML文件,它可命名为beans.xml、applicationContext.xml或其它。一般习惯使用applicationContext.xml。

— 配置文件包含Bean的id、类、属性及其值;包含一个<beans>元素和数个<bean>子元素。Spring IoC框架可根据Bean的id从Bean配置文件中取得该Bean的类,并生成该类的一个对象,继而从配置文件中获得该对象的属性和值。常见applicationContext.xml配置文件格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd"
[<!ENTITY contextInclude SYSTEM
"org/springframework/web/context/WEB-INF/contextInclude.xml">]>
<!--配置文件的根元素-->
<beans>
<bean id= "chinese" class="iocexample2.Chinese"><!--
<property>元素用来指定需要容器注入的属性;name指定属性值为language;ref指定需要向language属性注入的id,即注入的对象“英语”,该对象由English类生成。
--><property name="language" ref="英语"></property></bean><!--配置另外一个Bean--><bean id="英语" class="iocexample2.English"></bean>
</beans>

BeanFactory接口及其相关类:

— BeanFactory采用了工厂设计模式,即Bean容器模式,负责读取Bean的配置文件,管理对象的生成、加载,维护Bean对象与Bean对象之间的依赖关系,负责Bean的生命周期,对于简单的应用程序来说,使用BeanFactory就已经足够管理Bean,在对象的管理上就可以获得许多便利性。

— org.springframework.beans.factory.BeanFactory是一个顶级接口,它包含管理Bean的各种方法。Spring3框架也提供一些实现了该接口的类。

— org.springframework.beans.factory.xml.XmlBeanFactory是BeanFactory常用的实现类。其根据配置文件中的定义装载Bean。要创建XmlBeanFactory,需要传递一个FileInputStream对象,该对象把XML文件提供给工厂。

— 代码可以写成:

BeanFactory factory=new XmlBeanFactory( new FileInputStream("applicationContext.xml "));

— BeanFactory的常用方法如下:

getBean(String name):该方法可根据Bean的id生成该Bean的对象。

getBean(String name,Class requiredType):该方法可根据Bean的id和相应类生成该Bean的对象。

ApplicationContext接口及其相关类:

— 作为一个应用程序框架,只提供Bean容器管理的功能是不够的。若要利用Spring3所提供的一些高级容器功能,则可以使用ApplicationContext接口,该接口是提供高级功能的容器。

— ApplicationContext的基本功能与BeanFactory很相似,但它还有以下功能:

提供访问资源文件的更方便的方法。

支持国际化消息。

提供文字消息解析的方法。

可以发布事件,对事件感兴趣的Bean可以接收到这些事件。

— ApplicationContext接口的常用实现类有3个:
FileSystemXmlApplicationContext:从文件系统中的XML文件加载上下文中定义的信息。

ClassPathXmlApplicationContext:从类路径中的XML文件加载上下文中定义的信息,把上下文定义的文件当成类路径资源。

XmlWebApplicationContext:从Web系统中的XML文件加载上下文中定义的信息。

— 其中FileSystemXmlApplicationContext和ClassPathXmlApplicationContext的代码编写如下:

ApplicationContext context=new FileSystemXmlApplicationContext("d:/applicationContext.xml ");
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml ");

第一种使用文件系统的方式来查询配置文件,此时applicationContext.xml文件位于D盘下,第二种使用类路径来查询配置文件,此时applicationContext.xml文件位于项目的src目录底下。

— FileSystemXmlApplicationContext和ClassPathXmlApplicationContext的区别是:FileSystemXmlApplicationContext只能在指定的路径中查询applicationContext.xml配置文件,而ClassPathXmlApplicationContext可以在整个类路径中查询applicationContext.xml。

二.接下来来介绍一下注入的两种方式:

(1).在介绍之前,来了解一下注入的概念:IoC(控制反转)即依赖注入,就是指程序在运行过程中,如果需要另外一个对象协助完成时,无需在代码中创建被调用者,而是依赖外部的注入获取。Spring的依赖注入对调用者几乎没有任何要求,完全支持对象之间的依赖关系的管理。

(2).依赖注入通常有两种方式:设置注入和构造注入。

— 设置注入:设置注入是通过setter方法注入被调用者的实例。该方式简单、直观,而且容易理解,所以Spring的设置注入被大量使用。

— 构造注入:利用构造方法来设置依赖注入的方式称为构造注入。

三.以上内容仅供大家学习参考,写得不好,请见谅,如有错误,请指出,上面中没有附上一些例子,大家先理解一下吧!谢谢!



IoC(控制反转)的主要组件和注入的两种方式相关推荐

  1. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取要注入事件的 View 对象 | 通过反射获取 View 组件的事件设置方法 )

    文章目录 前言 一.获取要注入事件的 View 对象 二.通过反射获取 View 组件的事件设置方法并执行 前言 Android 依赖注入的核心就是通过反射获取 类 / 方法 / 字段 上的注解 , ...

  2. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 创建 事件监听器 对应的 动态代理 | 动态代理的数据准备 | 创建调用处理程序 | 创建动态代理实例对象 )

    文章目录 前言 一.创建 事件监听器 对应的 动态代理 二.动态代理 数据准备 三.动态代理 调用处理程序 四.动态代理 实例对象创建 前言 Android 依赖注入的核心就是通过反射获取 类 / 方 ...

  3. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 获取 Activity 中的所有方法 | 获取方法上的注解 | 获取注解上的注解 | 通过注解属性获取事件信息 )

    文章目录 前言 一.获取 Activity 中的所有方法 二.获取方法上的注解 三.获取注解上的注解 四.通过注解属性获取相关事件信息 前言 Android 依赖注入的核心就是通过反射获取 类 / 方 ...

  4. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入代码示例 )

    文章目录 总结 一.Android 事件依赖注入示例 1.创建依赖注入库 2.声明注解 (1).修饰注解的注解 (2).修饰方法的注解 3.Activity 基类 4.动态代理类调用处理程序 5.依赖 ...

  5. 【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )

    文章目录 总结 一.Android 视图依赖注入步骤 二.Android 布局依赖注入示例 1.创建依赖注入库 2.声明注解 3.Activity 基类 4.依赖注入工具类 5.客户端 Activit ...

  6. Dagger2 知识梳理(1) Dagger2 依赖注入的两种方式

    一.资料推荐 最近这几天一直在看有关Dagger2有关的文章,感觉就是这东西真难用.真难懂,数次想要放弃,还好有网上大神的教程帮助,模模糊糊总算能把基本的几个概念跑通了. 这里首先推荐 牛晓伟 的下面 ...

  7. 【REACT NATIVE 系列教程之十三】利用LISTVIEW与TEXTINPUT制作聊天/对话框获取组件实例常用的两种方式...

    本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2346.html ...

  8. 依赖注入的两种方式并附上例子

    1.依赖注入:就是指程序在运行过程中,如果需要另外一个对象协助完成时,无需在代码中创建被调用者,而是依赖外部的注入获取. 2.依赖注入的两种方式: 设置注入:设置注入是通过setter方法注入被调用者 ...

  9. spring依赖注入简介以及依赖注入的两种方式

    1.spring依赖注入简介 依赖注入:Set注入1.依赖:bean对象创建依赖于容器!2.注入:bean对象中的所有属性,由容器来注入! 2.依赖注入的两种方式   实体类: package com ...

最新文章

  1. applicationContext配置文件模板1
  2. SQL脚本修改数据库名称
  3. Git LFS的使用
  4. python的核心理念是什么_Python 面向对象编程的核心概念知识点简介
  5. Linux基础知识之包管理工具
  6. Visual C# 资源文件编程--创建资源文件
  7. PostgreSQL的 initdb 源代码分析之十
  8. JPDA 架构研究19 - JDI的连接模块
  9. 畅捷教育系统服务器,畅捷教育云平台使用手册一、学生操作流程图-畅捷通.PDF...
  10. 手把手教你开发微信小程序自定义底部导航栏
  11. 基于java高德地图经纬度转详细地址和GPS坐标转换为高德地图坐标
  12. 湖南科技大学计算机实力强吗,湖南省这2所重点大学,吉首大学和湖南科技大学,谁的实力更强...
  13. 《人类最美的54个公式》
  14. linux更换steam目录,终于可以在Linux上愉快地玩耍Steam啦
  15. 淘宝/天猫买家信息 API 返回值说明
  16. cidaemon.exe
  17. 微信公众平台开发入门教程
  18. U盘装系统,免设置bios(非pe镜像启动)
  19. 关于高压线路如何防山火
  20. ASP.NET Web应用程序发布到IIS

热门文章

  1. jquery 选择器、筛选器、事件绑定与事件委派
  2. 一步一步跟我学习hadoop(5)----hadoop Map/Reduce教程(2)
  3. web-storage-cache 使用JS数据缓存
  4. js一定要放在body的最底部么?聊聊浏览器的渲染机制
  5. asp.net配置IIS过程错误解决
  6. Javascript 的函数式对象(三)利用闭包模拟类的静态变量和方法
  7. Cassandra数据读取机制
  8. [ES6] 细化ES6之 -- async函数
  9. 机器学习实战3-sklearn使用下载MNIST数据集进行分类项目
  10. mysql取固定前缀的表_mysql删除指定前缀的表