`

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="..." class="...">
      <!-- collaborators and configuration for this bean go here -->
    </bean>
    <bean id="..." class="...">
      <!-- collaborators and configuration for this bean go here -->
    </bean>
    <!-- more bean definitions go here... -->
   </beans>


二 实例化容器:   
   Resource resource =new FileSystemResource("beans.xml");      BeanFactory factory=new XmlBeanFactory(resource);
 

Resource reource =new ClassPathResource("beans.xml"); BeanFactory factory=new XmlBeanFactory(resource); 


     
ApplicationContext context=new ClassPathXmlApplicationContext  (new    String("applicationContext.xml","applicationContext-part2.xml"));
//of course,an applicationContext is just an beanFactory
BeanFactory factory=(BeanFactory)context;


三 组成基于XML配置的多种元数据:
  两种方式:
   [list]
  • (1)
  •   将文件路径作为字符串数组传递给ApplicationContext构造器,如:
       ClassPathXmlApplicationContext  (new    String("applicationContext.xml","applicationContext-part2.xml"));
  • (2)<import resource="..."/>方式
  •    
         <beans>
         <import resource="services.xml"/>
           <import resource="resources/messageSource.xml"/>
           <import resource="/resources/themeSource.xml"/>
            <bean id="bean1" class="..."/>
           <bean id="bean2" class="..."/>
        </beans>

         此处相对路径,斜杠可以忽略...
    [/list]


    四 多种bean:
        在容器内部,这些bean定义由BeanDefinition对象来表示,该定义将包含以下信息:

        
    • 全限定类名:这通常就是已定义bean的实际实现类。如果通过调用static   factory方法来实例化bean,而不是使用常规的构造器,那么类名称实际上就是工厂类的类名。
    • bean行为的定义,即创建模式(prototype还是singleton)、自动装配模式、依赖检查模式、初始化以及销毁方法。这些定义将决定bean在容器中的行为用于创建
    • bean实例的构造器参数及属性值。比如使用bean来定义连接池,可以通过属性或者构造参数指定连接数,以及连接池大小限制等。
    • bean之间的关系,即协作 (或者称依赖)。

    bean定义
     [img]C:\Documents and Settings\Administrator\桌面\22.bmp[/img]
      除了通过bean定义来描述要创建的指定bean的属性之外,某些BeanFactory的实现也允许 将那些非BeanFactory创建的、已有的用户对象注册到容器中,比如使用  DefaultListableBeanFactory的registerSingleton(..) 方法。不过大多数应用还是采用元数据定义为主。
     BEAN的别名,两种方式:
      
    <alias name="fromName" alias="toName"/>或
      <bean id="bean2" alias="toName" class="..."/>

    实例化BEAN
       在极少数情况下,容器将调用类的静态工厂方法来创建bean实例,
     class属性将用来指定 实际具有静态工厂方法的类(至于调用静态工厂
     方法创建的对象类型是当前class还是其他 的class则无关紧要)。
       用构造器来实例化
       
    <bean id="exampleBean" class="examples.ExampleBean"/>
       <bean name="anotherExample" class="examples.ExampleBeanTwo"/>

            给构造函数指定参数以及为bean实例设置属性将在随后的部份中谈及。

       使用静态工厂方法实例化
           
    <bean id="exampleBean"
                  class="examples.ExampleBean2"
                  factory-method="createInstance"/>

        给工厂方法指定参数以及为bean实例设置属性将在随后的部份中谈
           
       使用实例工厂方法实例化
        
     <!-- the factory bean, which contains a method  called              createInstance() -->
         <bean id="myFactoryBean" class="...">
             ...
         </bean>
          <!-- the bean to be created via the factory bean -->
         <bean id="exampleBean"
               factory-bean="myFactoryBean"
               factory-method="createInstance"/>

    使用容器  
      
    InputStream is = new FileInputStream("beans.xml");
      BeanFactory factory = new XmlBeanFactory(is);

      BeanFactory提供的方法极其简单。它仅提供了六种方法供客户代码调用:
         [list=1]
       
    •  boolean containsBean(String):如果BeanFactory包含给定名
    • 称的bean定义 (或bean实例),则返回true
    •     Object getBean(String):返回以给定名字注册的bean实例。
    • 根据bean的配置情况,如果为singleton模式将返回一个共享的实例,否则
      将返回一个新建的实例。如果没有找到指定的bean,该方法可能会抛出
      BeansException异常(实际上将抛出NoSuchBeanDefinitionException
      异常),在对bean进行实例化和预处理时也可能抛出异常
    •     Object getBean(String, Class):返回以给定名称注册的bean实例,
    • 并转换为给定class类型的实例,如果转换失败,相应的异常    (BeanNotOfRequiredTypeException)将被抛出。上面
      的getBean(String)方法也适用该规则。
    •     Class getType(String name):返回给定名称的bean的Class。
    • 如果没有找到指定的bean实例,则抛出NoSuchBeanDefinitionException异常。
    •     boolean isSingleton(String):判断给定名称的bean定义
    • 或bean实例)是否为singleton模式(singleton将在bean的作用域中讨论)
      如果bean没找到,则抛出NoSuchBeanDefinitionException异常。
    •     String[] getAliases(String):返回给定bean名称的所有别名。






    分享到:
    评论

    相关推荐

      Spring 学习笔记二

      在本篇"Spring 学习笔记二"中,我们将深入探讨Spring框架的核心概念和技术细节,以便更好地理解和使用这个广泛应用于企业级Java开发的框架。Spring以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-...

      Springcloud学习笔记.md

      Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...

      Spring学习笔记( spring视频笔记)

      Spring学习笔记( spring视频笔记)

      Spring学习笔记 自我总结

      spring学习笔记

      Spring学习笔记(精华全记录)

      ### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...

      Spring学习笔记(马士兵spring视频笔记).doc

      Spring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).doc

      Spring学习笔记+学习源码.zip

      这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

      Spring学习笔记&源码

      本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...

      Spring学习笔记.zip

      根据提供的压缩包文件名,我们可以推测这是一个逐步学习Spring的系列笔记。从"Spring_day1"开始,可能涵盖了Spring的基础概念、环境搭建和基本配置。"Spring_day2"可能涉及了依赖注入和AOP的深入讲解。"Spring_day3...

      Spring框架学习笔记

      这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...

      javaSpring学习笔记

      “Java Spring学习笔记”是一份宝贵的资源,专门为想要学习和掌握Java Spring框架的开发者而设计。这份学习笔记提供了详细而系统的教程和实践指南,帮助初学者快速入门,并带领已经有一定经验的开发者深入理解和应用...

      尚学堂Spring学习笔记

      "尚学堂Spring学习笔记" 本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在...

      Spring6学习笔记

      Spring6学习笔记,师承老杜

      Spring Cloud 学习笔记.pdf

      Spring Cloud是一套微服务架构下的分布式系统解决方案,提供了在分布式系统环境下快速构建一些常见模式的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式...

      spring学习笔记

      ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...

      Spring学习笔记

      Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记Spring学习笔记

      springsecurity学习笔记

      在"springsecurity学习笔记"中,你可能会涉及以下主题: - Spring Security的基本配置,包括web安全配置和全局安全配置。 - 如何自定义认证和授权流程,比如实现自定义的AuthenticationProvider和...

      Spring学习笔记.doc

      ### Spring学习笔记知识点详解 #### 一、Spring框架概述 **1.1 什么是Spring** Spring框架是一个开源的轻量级应用框架,主要用于简化企业级应用程序的开发过程。它的核心特性在于提供了一种灵活的方式来组织和...

      spring实用学习笔记(能够跟着实操的)

      spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记(能够跟着实操的)spring实用学习笔记...

      Spring学习笔记.xmind

      Spring学习笔记.xmind

    Global site tag (gtag.js) - Google Analytics