??xml version="1.0" encoding="utf-8" standalone="yes"?>国产欧美一区二区精品久导航,www999久久,91久久精品国产91性色http://www.aygfsteel.com/momoJava/category/27272.html它的D情在于Zh都知道有它存?不明白它存在的意义... ...zh-cnTue, 18 Dec 2007 14:45:39 GMTTue, 18 Dec 2007 14:45:39 GMT60(?Spring的IOC容器理http://www.aygfsteel.com/momoJava/articles/159976.html风之D?/dc:creator>风之D?/author>Thu, 15 Nov 2007 08:43:00 GMThttp://www.aygfsteel.com/momoJava/articles/159976.htmlhttp://www.aygfsteel.com/momoJava/comments/159976.htmlhttp://www.aygfsteel.com/momoJava/articles/159976.html#Feedback0http://www.aygfsteel.com/momoJava/comments/commentRss/159976.htmlhttp://www.aygfsteel.com/momoJava/services/trackbacks/159976.html 一  .  对于Spring的容器管?首先得知道什么是容器理.

          java是一门面向对象的语言,在代码里,_略的讲一个对象的体现是一个类(class)的实?也可以说是一个JavaBean.在一个实际工E中,像这L对象或实例会存在很多,q且每个对象的状?作用范围,以及它们之间的关p?在Spring中ؓ依赖)是很复杂?所以要理它们也是很大的开销.而在spring?对与它们的管理就是容器管?你可以看作容器就是这些bean的集? 理的方面主要有bean的创?周期(作用?和初始属?注入),以及bean之间怺依赖的关pȝ.用比较专业的话就?-----理对象对其q行实例化、配|以及组?
                   SpringConrainer.jpg
                                                                                                                                                      Spring IoC 容器

?.  容器的运?
                  在Spring包的有两个很重要的东?org.springframework.beans?tt class="literal">org.springframework.context?q两个包是IOC的基?自然也是q行IOC容器的关?而其中关键的关键是分别在两个包里的BeanFactory?font face="Courier New">ApplicationContext,其中BeanFactory
提供了配制框架及基本功能,  ?/font> ApplicationContext则是它的扩展,q个扩展是针对企业别的,当中加入很多了企业的支?功能得到了进一步增强,比如更易与Spring AOP集成、消息资源处?国际化处?、事件传递及各种不同应用层的context实现(如针对web应用的WebApplicartionContext).
    1 . 实例化容?
       在项目工E中用于实例化容器的cM般都是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配置文g(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. 容器的?
            一般这是在代码U创ZIOC容器?是上述?1)),或者是获得了容器的"引用"后用(q里其实是beanFactory和ApplicationContext的实现类的引??);

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

   

  1. boolean containsBean(String) Q如?tt class="interfacename">BeanFactory包含l定名称的bean定义(或bean实例)Q则q回true
  2. Object getBean(String) Q返回以l定名字注册的bean实例。根据bean的配|情况,如果为singleton模式返回一个共享的实例Q否则将q回一个新建的实例。如果没有找到指定的beanQ该Ҏ可能会抛?tt class="exceptionname">BeansException异常(实际上将抛出NoSuchBeanDefinitionException异常)Q在对beanq行实例化和预处理时也可能抛出异?/li>
  3. Object getBean(String, Class) Q返回以l定名称注册的bean实例Qƈ转换为给定classcd的实例,如果转换p|Q相应的异常(BeanNotOfRequiredTypeException)被抛出。上面的getBean(String)Ҏ也适用该规则?/li>
  4. Class getType(String name) Q返回给定名U的bean?tt class="classname">Class。如果没有找到指定的bean实例Q则抛出NoSuchBeanDefinitionException异常?/li>
  5. boolean isSingleton(String) Q判断给定名U的bean定义(或bean实例)是否为singleton模式Q如果bean没找刎ͼ则抛?tt class="exceptionname">NoSuchBeanDefinitionException异常?/li>
  6. String[] getAliases(String) Q返回给定bean名称的所有别名?/li>

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

    三?.  配置元数?br />           我自q理解: 配置元数据的作用是Spring理Bean对象关系和资源文件的"规章制度",它是告诉IOC容器如何ȝl对象和对象之间的关pL怎样?
           目前,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技术的q用,学习是如何在XML元数据中q行配置.












]]>
(一)初识Springhttp://www.aygfsteel.com/momoJava/articles/159938.html风之D?/dc:creator>风之D?/author>Mon, 12 Nov 2007 05:22:00 GMThttp://www.aygfsteel.com/momoJava/articles/159938.htmlhttp://www.aygfsteel.com/momoJava/comments/159938.htmlhttp://www.aygfsteel.com/momoJava/articles/159938.html#Feedback0http://www.aygfsteel.com/momoJava/comments/commentRss/159938.htmlhttp://www.aygfsteel.com/momoJava/services/trackbacks/159938.html                   一提到Spring,少不了提及IOC和AOP.实q两个东东是Spring最核心的东?几乎Spring其它的东襉K是其余它们而实现的.但是不能说q就是Spring的全?片面和简单的说来,Spring是一个轻量的J2EE框架,Spring的实现是늛了显C层,中间?逻辑?,以及到数据持久层.
         在它的官Ҏ里是q样一q图说明:
             

                                          
                  q是一个Spring所能涉及WEB一个应用的完整l构,它几乎完整覆盖了一般WEB工程的所需.对于在Sring中到底有些什么模?它们所L作用和具体有实现了什么技?下面q幅囑ְ很清楚的说明了一?

                                         
                  

  1. Core 装包是框架的最基础部分Q提供IoC和依赖注入特性。这里的基础概念是BeanFactoryQ它提供对Factory模式的经典实现来消除对程序性单例模式的需要,q真正地允许你从E序逻辑中分d依赖关系和配|?

  2. 构徏于Core 装包基上的 Context装包,提供了一U框架式的对象访问方法,有些象JNDI注册器。Context装包的Ҏ得自于Beans装包,q添加了对国际化QI18NQ的支持Q例如资源绑定)Q事件传播,资源装蝲的方式和Context的透明创徏Q比如说通过Servlet容器?

  3. DAO提供了JDBC的抽象层Q它可消除冗长的JDBC~码和解析数据库厂商Ҏ的错误代码?q且QJDBC 装包还提供了一U比~程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且?span class="emphasis">所有的POJOsQplain old Java objectsQ?/span>都适用?

  4. ORM装包提供了常用的“对?关系”映APIs的集成层?其中包括JPA、JDO、Hibernate ?iBatis 。利用ORM装包,可以混合使用所有Spring提供的特性进行“对?关系”映,如前Ҏ到的单声明性事务管理?

  5. Spring?AOP 装包提供了W合 AOP Alliance规范的面向方面的~程Qaspect-oriented programmingQ实玎ͼ让你可以定义Q例如方法拦截器Qmethod-interceptorsQ和切点QpointcutsQ,从逻辑上讲Q从而减׃码的功能耦合Q清晰的被分d。而且Q利用source-level的元数据功能Q还可以各U行Z息合q到你的代码中,q有点象.Net的attribute的概c?

  6. Spring中的 Web 包提供了基础的针对Web开发的集成Ҏ,例如多方文g上传Q利用Servlet listenersq行IoC容器初始化和针对Web的application context。当与WebWork或Struts一起用SpringӞq个包Spring可与其他框架l合?

  7. Spring中的 MVC装包提供了Web应用的Model-View-ControllerQMVCQ实现。Spring的MVC框架q不是仅仅提供一U传l的实现Q它提供了一U?清晰?/span> 分离模型Q在领域模型代码和web form之间。ƈ且,q可以借助Spring框架的其他特性?

                  上面的文字是来自官方文档的翻?个h认ؓq是最好的概括?最后对于Spring的用场景和详细的特性就不详l的写出?我认为最主要的是l合目的实际来学习不过q运的是现在在项目的间隙有一定的旉d?接下来我从Spring的IOC和容器管理开始我的学?
                                                                                                                                                        ? 本h首次写有x术上的bolg,有上面错误和不望大家多多批评和更正.在次先表C?]
                         



]]>
վ֩ģ壺 ̩| ʯ¥| ǰ| ¹| ƫ| Ƽ| | | Ȩ| կ| | | | | Ԫ| Ϋ| ɽ| | ɽ| | | ½| | | | Զ| | ƺ| | Ӽ| | | ʡ| ̨| | | | ̨ǰ| ƽ| ຣʡ| |