Spring配置文件浅析

Spring的配置文件概述

Spring的配置文件是用于指导Spring工厂进行Bean的生产、依赖关系注入及Bean实例分发的"图纸",它是一个或多个标准的XML文档,J2EE程序员必须学会并灵活应用这份“图纸”,准确表达自己的"生产意图"

Spring配置文件示例

   Spring配置文件的一般结构如下:

 <beans>
     <import resource="resource1.xml"/>
     <import resource="resource2.xml"/>
     <bean id="bean1" class="**"></bean>
     <bean name="bean2" class=""></bean>
     <bean alias="bean3" name="bean2"/>
 </beans>

Spring容器高层视图

    Spring容器启动基本条件

    Spring的框架类包

    Bean的配置信息

        xml bean,java configuration, autowire

    Bean的实现类


    Bean的元数据信息

        Bean的实现类

        Bean的属性信息

        Bean的依赖关系

        Bean的行为配置

        Bean的创建方式


  基于XMl的配置

SpringBean的命名

SpringBean的实例化

Spring Ioc容器如何实例化Bean呢?传统应用程序可以通过new和反射方式进行实例化Bean,而Spring IoC容器则需要根据Bean定义里的配置元数据使用反射机制来创建Bean.在Spring IoC容器中主要有以下几种创建Bean实例的方式:

使用构造器实例化Bean

    构造器实例化Bean是最简单的方式,Spring IoC容器既能使用默认空构造器也能使用有构造器两种方式创建Bean,如下所示:

1、空构造器实例化:

<bean id="helloServiceNoWidthArgs" class="com.hello"/>

2、有参数构造器实例化

<bean id="helloServiceWithArgs" class="com.hello">

<constructor-args index="0" value="hello Spring">

</bean>


   使用静态工程方式实例化Bean

   使用静态工厂的方式除了指定必须的class属性,还要指定factory-method属性来指定实例化Bean的方法,而且使用静态工厂方法也允许指定方法参数,Spring IoC容器将调用此属指定的方法来获取Bean,配置如下:

<bean id="helloService" class="com.hello" factory-method="newInstance">

<constructor-args index="0" value="hello factory">

</bean>


   使用实例工厂方法实例化Bean

    使用实例工厂方式不能指定class属性,此时必须使用factory-bean属性来指定工厂Bean,factory-method属性指定实例化Bean的方法,而且使用实例工厂方法允许指定方法参数,方式和使用构造器方式一样,

定义实例工厂bean

<bean id="beanInstanceFactory" class="com.helloService" />

<bean id="helloOne" factory-bean="beanInstanceFactory" factory-method="newInstance">

<constructor-arg index="0" value="hello"></constructor-arg>

</bean>

SpringBean的作用域

Spring Bean中所说的作用域,在配置文件中即是"scope"。在面向对象程序设计中一般指对象或变量之间的可见范围。而在Spring容器中是指其创建的Bean对象相对于其他Bean对象的请求可见范围:

Bean的作用域类型与配置

在Spring容器当中,一共提供了5种作用域类型,在配置文件中,通过属性scope来设置Bean的作用域范围。

singleton: <bean id="userInfo" class="com.UserInfo" scope="singleton"></bean>

prototype:<bean id="userinfo" class="com.Userinfo scope="prototype""></bean>

request:<bean id="userinfo" class="com.Userinfo" scope="request"></bean>

session:<bean id="userInfo" class="com.Userinfo" scope="session"></bean>

global session: <bean id="userinfo" class="com.userinfo" scope="globalSession"></bean>

singleton作用域是指在Spring IoC容器中仅存在一个Bean示例,Bean以单实例的方式存在,单实例模式是最重要的设计模式之一,在Spring中对此实现了超越,可以对那些非线程安全的对象采用单实例模式

singleton配置方式

<bean id="car" class="com.car" scope="singleton"></bean>

<bean id="boss1" class="com.boss" p:car-ref="car"></bean>

<bean id="boss2" class="com.boss" p:car-ref="car"></bean>

<bean id="boss3" class="com.boss" p:car-ref="car"></bean>

prototype作用域是指每次从容器中调用bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行new Bean()的操作。在默认情况下,Spring容器在启动时不实例化prototype的Bean。

prototype的配置方式

<bean id="car" class="com.car" scope="prototype"></bean>

<bean id="boss1" class="com.boss" p:car-ref="car"></bean>

<bean id="boss2" class="com.boss" p:car-ref="car"></bean>

<bean id="boss3" class="com.boss" p:car-ref="car"></bean>

当用户使用Spring的webApplicationContext时,还可以使用另外3种Bean的作用域,即request,session和global session.在使用web应用环境相关的bean作用域时,必须在web容器中进行一些额外的配置:

低版本web容器配置

<filter>

<filter-name></filter-name>

<filter-class></filter-class>

</filter>

<filter-mapping>

<filter-name></filter-name>

<servlet-name></servlet-name>

</filter-mapping>

高版本web容器

<listenner>

<listener-class></listenner-class>

</listener>

web应用环境的作用域

request作用域

session作用域

globalsession作用域

配置文件的整合

多个配置文件

spring-common.xml位于 common文件夹下

spring-connection.xml位于connection文件夹下

spring-module.xml位于module文件夹下

传统加载方式:

ApplicaitonContext context=new ClassPathXmlApplicationContext(new String[]{"Spring-common.xml","Spring-connection.xml","spring-module.xml"})

配置整合文件

spring-all-module.xml

<beans>

<import resource ="common/spring-common.xml"/>

<import resource="connection/spring-connection.xml"/>

<import resource="module/spring-module.xml"/>

</beans>

整合后加载方式:

applicationCongtext context = new ClassPathXmlApplicationContext("spring-all-module.xml")




时间: 2024-10-10 19:06:17

Spring配置文件浅析的相关文章

spring配置文件详解

转自: http://book.51cto.com/art/201004/193743.htm 此处详细的为我们讲解了spring2.5的实现原理,感觉非常有用 spring配置文件是用于指导Spring工厂进行Bean生产.依赖关系注入(装配)及Bean实例分发的"图纸".JavaEE程序员必须学会并灵活应用这份"图纸"准确地表达自己的"生产意图".Spring配置文件是一个或多个标准的XML文档,applicationContext.xml是

监听器如何获取Spring配置文件(加载生成Spring容器)

Spring容器是生成Bean的工厂,我们在做项目的时候,会用到监听器去获取spring的配置文件,然后从中拿出我们需要的bean出来,比如做网站首页,假设商品的后台业务逻辑都做好了,我们需要创建一个监听器,在项目启动时将首页的数据查询出来放到application里,即在监听器里调用后台商品业务逻辑的方法,也就是说我们需要在监听器里获取Spring中配置的相应的bean.先把监听器创建出来: 1. 创建InitDataListener 创建一个监听器InitDataListener继承Serv

maven创建web工程Spring配置文件找不到问题解决方案

使用maven创建web工程,将Spring配置文件applicationContext.xml放在src/resource下,用eclipse编译时提示class path resource [applicationContext.xml] cannot be opened because it does not exist错误.但是用mvn clean package命令编译时成功的.web.xml配置的如下 <context-param><param-name>context

Spring配置文件

spring配置文件名字问题 博客分类: Spring SpringXMLWeb 在做java开发时,如果用到spring,那么在做j2ee开发都可能用到spring的配置文件,那么spring的配置文件名到底应是什么呢?默认的情况下spring会从web-inf目录下去找spring的配置文件,并且spring的配置文件名是applicationContext.xml,如果不想让spring的配置文件名为applicationContext.xml,而是把配置文件名改成beans.xml,那么

一份spring配置文件及其详解

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/axu20/archive/2009/10/14/4668188.aspx 1.基本配置:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/

Hibernate SQL方言 (hibernate.dialect) Spring配置文件applicationContext.xml

转自:http://www.cnblogs.com/wj-wangjun/archive/2009/10/21/1587624.html Hibernate SQL方言 (hibernate.dialect) 数据库 hibernate方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect

SSH问题:系统启动时,spring配置文件解析失败,报”cvc-elt.1: 找不到元素 &#39;beans&#39; 的声明“异常

现象:spring加载配置文件applicationContext.xml出错,抛出nested exception is og.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 47; cvc-elt.1: 找不到元素 'beans' 的声明r的异常信息. 造成该异常原因有两种: 第一,配置文件头部配置的xsd版本信息不正确,造成解析时出错.spring头部xsd或dtd校验文件的查找分两步,第一先从本地jar包中找,如果找到则用

spring 配置文件的头部 xmls

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx

XML配置文件的命名空间与Spring配置文件中的头

一直以来,写Spring配置文件,都是把其他配置文件的头拷贝过来,最多改改版本号,也不清楚哪些是需要的,到底是干嘛的.今天整理一下,拒绝再无脑copy. 一.Spring配置文件常见的配置头 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http:/