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

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

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

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

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

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



时间: 2024-10-09 23:13:15

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

spring学习一——基本搭建,属性注入的两种方式

今天用spring 3.2.5搭建了基本的环境,spring出的太快了,前段时间才3.2.5,今儿个一瞧已经上了4的版本了,稍后给出spring的jar下载地址,毕竟现在官网上找不到了啊. 废话少说了,spring 3.2.5已经将所有的依赖包都放在了dist的lib下面,并且都有doc包和源码包,很是方便.先导入所需的jar包:core,context,beans,expression 四个jar包,除此之外,还需导入commons-logging. 下一步,新建xml文件,建议名称为 app

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

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/react-native/2346.html 本篇Himi来利用ListView和TextInput这两种组件实现对话.聊天框. 首先需要准备的有几点:(组件的学习就不赘述了,简单且官方有文档) 1. 学习下 ListView: 官方示例:http://reactnative.cn/docs/0.27/tutorial.html#content

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

1.依赖注入:就是指程序在运行过程中,如果需要另外一个对象协助完成时,无需在代码中创建被调用者,而是依赖外部的注入获取. 2.依赖注入的两种方式: 设置注入:设置注入是通过setter方法注入被调用者的实例. 构造注入:利用构造方法来设置依赖注入的方式称为构造注入. 3.接下来附上例子来说明设置注入 (1).首先,附上设置注入的例子,新建一个Java项目,配置好Spring后,即可,项目结构图如下图所示: (2).首先,新建2个接口,一个Animal接口,一个Person接口,其中Animal接

Spring的AOP面向切面原理,IOC控制反转【也叫DI依赖注入】原理

AOP即面向切面:AOP技术利用一种称为“横切”的技术,解剖封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,这样就能减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性.AOP把软件系统分为两个部分:核心关注点和横切关注点.业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点.横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似.比如权限认证.日志.事务处理.简言:把java对象进行横切: 即在对像执行功能时进行了插入:设置了

Python 防止mysql 注入的两种方式

Python防止sql注入一般有两种方法 1.escape_string MySQLdb.escape_string(param) 注意:如果报错出现 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) # 因为用户输入的字符串的字符集是ascll,但是ascll不支持中文, 所以我们可以把python的默认字符集改成utf-8就可以了 2. excute参数化传递 cur.excute

angularJs模版注入的两种方式

一,声名式注入 var myApp = angular.module("myApp",[]);//这里数组为空 myApp.controller("indexCtrl",['$scope',function($scope){              //如果想用混淆,必须使用中括号中声名注入参数 }]) 二,直接注入 app.js angular.moudle("myApp",[ 'ngRoute', 'myApp.controllers' ]

实现mapper接口注入的两种方式,以及后台的使用区别

1.使用模板方式: 1 <!--使用模板类实现mybatis --> 2 <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 3 <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>

senchaTouch 给组件传参的两种方式

在senchaTouch 页面跳转中,有时我们需要将其前一个页面的相关参数传入到新的页面或者新的控件中,这是我们该如何传递参数进去呢,一下有两种方式: var arg;//定义将要 传入的参数 Ext.define('MyApp.view.Init',{ extend:'Ext.Container', id:'chat_more_btm', xtype:'init', config:{ layout:'fit', myarg:arg//把将要传入的参数映射到一个属性上面 }, initializ

Spring框架中IoC(控制反转)的原理

一.IoC的基础知识以及原理: 1.IoC理论的背景:在采用面向对象方法设计的软件系统中,底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑.即软件系统中对象之间的耦合,对象A和对象B之间有关联,对象B又和对象C有依赖关系,这样对象和对象之间有着复杂的依赖关系,所以才有了控制反转这个理论. 2.什么是控制反转(IoC): (1).IoC是Inversion of Control的缩写,有的翻译成"控制反转",还有翻译成为"控制反向"或者&