随笔 - 1  文章 - 0  trackbacks - 0
<2025年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(1)

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

一  .  对于Spring的容器管理,首先得知道什么是容器管理.

          java是一门面向对象的语言,在代码里,粗略的讲一个对象的体现就是一个类(class)的实例.也可以说就是一个JavaBean.在一个实际工程中,像这样的对象或实例会存在很多,并且每个对象的状态,作用范围,以及它们之间的关系(在Spring中为依赖)是很复杂的,所以要管理它们也是很大的开销.而在spring中,对与它们的管理就是容器管理.你可以看作容器就是这些bean的集合. 管理的方面主要有bean的创建,周期(作用域)和初始属性(注入),以及bean之间相互依赖的关系等.用比较专业的话就是------管理对象对其进行实例化、配置以及组装.
                   SpringConrainer.jpg
                                                                                                                                                      Spring IoC 容器

二 .  容器的运作.
                  在Spring包的有两个很重要的东西,org.springframework.beansorg.springframework.context包,这两个包是IOC的基础包,自然也是运行IOC容器的关键.而其中关键的关键就是分别在两个包里的BeanFactoryApplicationContext,其中BeanFactory提供了配制框架及基本功能,  而
ApplicationContext则是它的扩展,这个扩展是针对企业级别的,当中加入很多了企业级的支持,功能得到了进一步增强,比如更易与Spring AOP集成、消息资源处理(国际化处理)、事件传递及各种不同应用层的context实现(如针对web应用的WebApplicartionContext).
    1 . 实例化容器:
       在项目工程中用于实例化容器的类一般都是ApplicationContext以及他的扩展WebApplicationContext,当然BeanFactory也能用.
       在代码中一般是:

				
//1.
 Resource resource = new FileSystemResource("beans.xml");
BeanFactory factory 
= new XmlBeanFactory(resource);
//2.
ClassPathResource resource 
= new ClassPathResource("beans.xml");
BeanFactory factory 
= new XmlBeanFactory(resource);
//3.
ApplicationContext context 
= new ClassPathXmlApplicationContext(
        
new String[]{"applicationContext.xml""applicationContext-part2.xml"});
// of course, an ApplicationContext is just a BeanFactory
BeanFactory factory = (BeanFactory) context;  
//4.                   
ApplicationContext context = new FileSystemXmlApplicationContext("src\\beans.xml");

             实际的项目中,上述的实例化方法一般都是用于非Web工程(c/s)或者测试代码中而在web工程内一般用的是ApplicationContext,实例化它只是在web配置文件(web.xml)里写入配置信息: 
               

 <!--         必须                -->
<context-param>
  
<param-name>contextConfigLocation</param-name>
  
<param-value>/WEB-INF/daoContext.xml /WEB-INF/applicationContext.xml</param-value>
</context-param>

    <!--         下面的listener 和 servlet 是两个相同效果的配置 ,只能选其一,只是listener 不能在与Servlet 2.2兼容的web容器中使用,
                  但在都可用的情况下,官方推崇首选 listener    -->

<listener>
  
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- or use the ContextLoaderServlet instead of the above listener     -->

<servlet>
  
<servlet-name>context</servlet-name>
  
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
  
<load-on-startup>1</load-on-startup>
</servlet>

         2. 容器的使用:
            一般这是在代码级创建了IOC容器后(就是上述的(1)),或者是获得了容器的"引用"后用(这里其实是beanFactory和ApplicationContext的实现类的引用 如:);

InputStream is  =   new  FileInputStream( " beans.xml " );
BeanFactory factory 
=   new  XmlBeanFactory(is);

   

  1. boolean containsBean(String) :如果BeanFactory包含给定名称的bean定义(或bean实例),则返回true
  2. Object getBean(String) :返回以给定名字注册的bean实例。根据bean的配置情况,如果为singleton模式将返回一个共享的实例,否则将返回一个新建的实例。如果没有找到指定的bean,该方法可能会抛出BeansException异常(实际上将抛出NoSuchBeanDefinitionException异常),在对bean进行实例化和预处理时也可能抛出异常
  3. Object getBean(String, Class) :返回以给定名称注册的bean实例,并转换为给定class类型的实例,如果转换失败,相应的异常(BeanNotOfRequiredTypeException)将被抛出。上面的getBean(String)方法也适用该规则。
  4. Class getType(String name) :返回给定名称的bean的Class。如果没有找到指定的bean实例,则抛出NoSuchBeanDefinitionException异常。
  5. boolean isSingleton(String) :判断给定名称的bean定义(或bean实例)是否为singleton模式,如果bean没找到,则抛出NoSuchBeanDefinitionException异常。
  6. String[] getAliases(String) :返回给定bean名称的所有别名。

     上面六点,都是在BeanFactory中的基本和一些简单的用法,但在将其扩展后了的ApplicationContext中加入了企业级的功能,比如国际化,资源访问等,这些我将在学习Spring
      XML格式的元数据配置中学习.

    三  .  配置元数据
           我自己的理解: 配置元数据的作用就是Spring管理Bean对象关系和资源文件的"规章制度",它是告诉IOC容器如何去组织对象和对象之间的关系是怎样的.
           目前,Spring支持三种配置元数据格式:XML格式、Java属性文件格式或使用Spring公共API编程实现。很显然,XML是现在最方便和容易编写的配置元数据.
        在Spring的XMl配置元数据格式为:
          

<? xml version = " 1.0 "  encoding = " UTF-8 " ?>
< beans xmlns = " http://www.springframework.org/schema/beans "
       xmlns:xsi
= " http://www.w3.org/2001/XMLSchema-instance "
       xsi:schemaLocation
= " http: // www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-2.0.xsd ">
   < bean id = "XXX "   class = "XXX " >
    
<!--  collaborators and configuration  for   this  bean go here  -->
  
</ bean >
  
< bean id = "XXX "   class ="XXX " >
    
<!--  collaborators and configuration  for   this  bean go here  -->
  
</ bean >
  
<!--  more bean definitions go here -->
</ beans >

              到此,理解了什么是Spring,以及它在工程中的基本框架,下面着重学习的就是它的依赖注入和AOP技术的运用,学习是如何在XML元数据中进行配置.










posted on 2007-11-15 16:43 风之殇 阅读(281) 评论(0)  编辑  收藏 所属分类: spring学习笔记

只有注册用户登录后才能发表评论。


网站导航: