首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2+hibernate3+spring2读书笔记15(核心血制-IOC)

2012-10-06 
struts2+hibernate3+spring2读书笔记15(核心机制-----IOC)第16章 核心机制-----IOC本章导读语Spring框架所

struts2+hibernate3+spring2读书笔记15(核心机制-----IOC)

                                     第16章 核心机制-----IOC   

本章导读语
      Spring框架所提供的众多功能之所以能成为一个整体正是建立在IoC的基础之上,IoC是Spring中极其重要的一部分,可谓是Spring的灵魂。

   本章将讲述IoC的知识,包括IoC的相关概念(例如实现的基本原理、IoC容器的概念等),另外还将讲述实例化容器和bean的几种方式,以及Spring中注入的几种方式。另外,Spring一般采用XML格式来配置,因此还讲述了Spring的基本配置,并重点讲述了bean属性及构造参数的配置。


一.解说IoC的相关概念

1.建立工程(建立一个名为springioc的web工程)

2.控制反转的基本原理(IoC指的就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接控制。即组件之间的依赖关系由容器在运行期决定,下面以实例的形式演示IoC的原理)

(1)编写影片类:Movie.java



2.<beans>元素的配置

<beans>为配置文件的根元素,它可包含0到多个<bean>元素。它有如下属性:
(1)default-autowire:该属性用于指定默认的bean自动装配模式。
(2)default-dependency-check:该属性用于指定默认的依赖检查模式。
?none:不进行依赖检查。没有指定值的bean属性仅仅是没有设值。
?Simple:对于基本类型和集合(除了合作者外,比如其他的bean,所有东西)进行依赖检查。
?Object:对合作者进行信赖检查。
?All:对合作者,基本类型和集合都进行依赖检查。
(3)Default-lazy-init:该属性用于指定是否默认延迟加载。值为true表示延迟加载,为false表示非延迟加载
  
3.<bean>元素的基本配置
   <bean>元素为<beans>元素的子元素,它用于指明Spring容器一个类以及指明它是如何配置的。它具有如下属性:

?class:该属性用于指定类的全路径,例如amigo.spring.chapter16.SMSSender.
?id:class属性对应的类在BeanFactory中的唯一标识,代码中可通过该名称在BeanFactory获取类实例。
?name:同上,如果给bean增加别名,可以通过name属性指定一个或多个id
?scope:用于指定bean的作用域。Spring支持5种作用域
?abstract:设定ApplicationContext是否对bean进行预先的初始化。
?parent:定义一个模板。
?autowire:bean自动装配模式。
?dependency-check:依赖检查模式,同<beans>元素的default-dependency-check属性。
?lazy-init:延迟加载。
?init-method:该属性用于指定初始化方法,一般用于一些资 源的初始化工作。
?destroy-method:该属性用于指定销毁方法。
?factory-bean:该属性用于指定通过实例工厂方法创建bean,class属性必须为空,factory-bean属性必须指定一个bean的名字,这个bean一定要在当前的bean工厂或者父bean工厂中,并包含工厂方法。
?factory-method:该属性用于设定工厂类的工厂方法。
?depends-on:该属性用于指定Bean依赖关系。一般情况下无需设定。通过depends-on指定其依赖关系可保证在此Bean加载之前,首先对depends-on所指定的资源进行加载。

4.<property>元素的基本配置

<property>属性为<bean>元素的子元素,它用于设轩置一个属性。
?name:该属性用于指定属性的名称。
?value:用于指定bean的属性值。
?ref:指定了属性对BeanFactory中其他Bean的引用关系。


三.实例化容器的几种方法

1.创建包amigo.sqring.ioc.container

2.编写辅助测试Bean:HelloBean.java


7.使用实例工厂方法实例化(bean3.xml)




最后运行结果为:
使用构造器实例化,username=null,password=null
使用静态工厂方法实例化,username=amigo1,password=123
使用实例工厂方法实例化,username=amigo2,password=123456


五.注入方式---构造子注入

1.建立包目录

2.编写短信类SMSSender.java(SMSSender1.java类用于发送短信,所需要的参数采用构造函数的方式注入,本例只是演示Spring构造函数注入的方式,所以发送短信的方法并没有给出实现,该类的代码如下所示:)




3.编写测试类:


(2)编写依赖类:Dept.java




3.内部bean(内部bean是指在一个bean的<property/>或<constructor-arg/>元素中使用<bean/>元素定义的bean)

(1)编写测试类:OuterBean.java




(2)编写内部bean类:InnerBean.java




(3)修改配置文件:beanproperties.xml




热点排行