spring笔记(读spring技术手册)

Bean、消息、事件

Spring的核心是一个容器(Container),它实现了IoC的概念,可以协助管理各个对象的生命周期,以及对象之间的依赖关系。在核心容器的使用,熟悉BeanFactory与ApplicationContext的运用是了解Spring的重点所在。

 

1 Bean基本管理

 

1.1  BeanFactory、ApplicationContext

     BeanFactory负责读取Bean定义文件;管理对象的加载、生成;维护Bean对象与Bean对象之间的依赖关系;负责Bean的生命周期。对于简单的应用程序来说,使用BeanFactory就已经足够来管理Bean了,在对象的管理上已可以获得许多的方便性,BeanFactory接口包括了6种方法可以调用。

boolean containsBean(String)

       测试BeanFactory中是否包含指定名称的Bean。

Object getBean(String)

       指定Bean定义文件中设置的名称,可取得相对应的Bean实例。

Object getBean(String,class)

       指定Bean定义文件中设置的名称,取得相对应的Bean实例,并转换(Cast)至指定的类。

Class getType(String name)

       指定Bean定义文件中设置的名称,取得对应的Bean的class实例

boolean isSingletom(String)

       指定Bean定义文件中设置的名称,测试指定的Bean之scope是否为Singleton(之后在Bean的scope中会说明)。

String[] getAliases(String)

       指定Bean定义文件中设置的名称,取得该Bean所有的别名(之后在Bean的识别名称与别名中会说明)。

 

 

不过作为一个应用程序框架,只提供Bean容器管理的功能是不够的,若要利用Spring所提供的一些特色以及高级的容器功能,可以使用org.springframework.context.ApplicationContext.ApplicatonContext是基于BeanFactory而建立的,也具备读取Bean定义文件,维护Bean之间的依赖关系等功能,除此之外,ApplicationContext还提供一个应用程序所需的更完整的框架功能,例如:

               提供更方便地取得资料文件(Resources file)的方法。

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

              支持国际化消息

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

 

Spring的创始者Rod Johnson建议使用ApplicationContext来取代BeanFactory,在实现ApplicationContext的类中,最常使用的大概是以下3个。

 

org.springframework.context.support.fileSystemXmlApplicationContext

       可指定XML定义文件的相对路径或绝对路径读取定义文件。

org.springframework.context.support.ClassPathXMlApplicationContext

      从Classpath设置路径中读取XML定义文件

org.springframework.web.context.support.XmlWebApplication

      在Web应用程序的文件架构中,指定相对位置读取定义文件。

 

 

 

 

 

在Spring中整合Hibernate

    Spring整合了对Hibernate的设置,并提供了org.springframework.orm.hibernate3.HibernateTemplate等类,让您在结合Hibernate使用时可以简化程序编写的流程,并且与JDBC相类似的使用模型提供使用Hibernate时的编程事务管理与声明事务管理

 

SessionFactory注入

    Spring可以与Hibernate结合使用,Hibernate的连结、事务管理等是由建立SessionFactory开始的,SessionFactory在应用程序中通常只需存在一个实例,因而SessionFactory底层的DataSource可以使用Spring的Ioc注入,之后再把SessionFactory注入至相依赖的对象之中。

 

 

例如可以修改前面的项目,首先可删除hibernate.cfg.xml,因为这部分可以由Spring在Bean定义文件中编写DataSource设置以及依赖注入来取代,可以如下编写Spring的Bean定义文件:

 

 

bean-config.xml

 

 

....

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

      <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

      <property name="url" value="jdbc:mysql://localhost:3306/demo"/>

      <property name="username" value="caterpillar"/>

      <property name="password"  value="123456"/>

</bean>

 

 

...........

 

HibernateTemplate

      Spring的Template-callback机制在Hibernate的实现提供了org.springframework.orm.hibernate3.HibernateTemplate类与org.springframework.orm.hibernate3.HibernateCallback接口。

 

 

 

 

 

你可能感兴趣的:(spring,bean,Hibernate,mysql,jdbc)