TypechoJoeTheme

IT技术分享

统计
SSH

Spring 配置文件简述

2015-06-07
/
0 评论
/
668 阅读
/
正在检测是否收录...
06/07

Spring的配置Schema文件分布在各个模块类包中,如果模块拥有对应的Schema文件,则可以在模块类包中找到一个config目录,Schema文件就位于该目录中。

一、Spring相关Schema

Spring Schema包括:

  • Spring-beans-3.0.xsd:用于配置bean
  • Spring-aop-3.0.xsd:AOP配置定义的Schema
  • Spring-tx-3.0.xsd:声明式事务配置定义的Schema
  • Spring-mvc-3.0.xsd:MVC配置定义的Schema
  • Spring-util-3.0.xsd:简化某些复杂的标准配置而提供的Schema
  • Spring-jee-3.0.xsd:简化J2EE中EJB等配置而提供的Schema
  • Spring-jdbc-3.0.xsd:为配置Spring内建数据库提供的Schema
  • Spring-jms-3.0.xsd:JMS配置的Schema
  • Spring-lang-3.0.xsd:为集成动态语言而定义的
  • Spring-oxm-3.0.xsd:配置xml映射到Schema
  • Spring-task-3.0.xsd:用于任务调度的Schema
  • Spring-tool-3.0.xsd:集成Spring一些有用工具而定义的Schema

二、Bean id的命名方式

<!-- 1、配置全限定类名-->

<bean class="so.dun.spring.test"/>

<!-- 2、使用ID -->

<bean id="test" class="so.dun.spring.Test"/>

<!-- 3、使用name-->

<bean name="test" class="so.dun.spring.Test"/>

<!-- 4、同时使用ID和name(此时name是别名)-->

<bean id="test" name="test1" class="so.dun.spring.Test"/>

<!-- 5、使用多个name -->

<bean name="test1;test2;test3"  class="so.dun.spring.Test"/>

<!-- 6、使用别名 -->

<bean name="test" class="so.dun.spring.Test"/>

<alias alias="test1" name="test"/>

<aliss alias-"test2" name="test"/>
//读取配置文件实例化一个IOC容器

BeanFactory beanFactory = new ClassPathXmlApplicationContext("conf/configure.xml");

// 方式一

Test test= beanFactory.getBean(Test.class);

// 方式二

Test test= beanFactory.getBean("test",Test.class);

三、Bean的实例化

1、使用构造方法实例化Bean

<!--  使用无参构造器-->

<bean id="test" class="so.dun.spring.Test"/>

<!-- 使用有参构造器 -->

<bean id="test" class="so.dun.spring.Test">

    <!-- index 表示参数的位置 -->

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

</bean>

2、使用静态工厂方式实例化Bean,需要指定class属性,还要指定factory-method属性来指定实例化Bean的方法,允许指定方法参数,

<!-- 使用有静态工厂,其中newInstance是工厂中需要写的方法,方法中返回Test的实例 -->

<bean id="testStat" class="so.dun.spring.TestStatFactory" factory-method="newInstance">

    <!-- index 表示参数的位置 -->

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

</bean>

3、使用实例工厂方法实例化Bean,不能指定class属性,必须使用factory-bean的属性来指定工厂Bean,Factory Method的属性来指定实例化Bean的方法,允许指定方法参数。

<!-- 定义实例工厂Bean -->

<bean id=" testInstanceFactory" class="so.dun.spring.TestInstanceFactory" />

<!-- 使用实例工厂Bean来创建Bean -->

<bean id="testInstance" factory-bean="testInstanceFactory" factory-mathod="newInstance">

    <!-- index 表示参数的位置 -->

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

</bean>

四、Bean的作用域

1、singleton。是scope的缺省值。IOC容器中只存在一个共享的唯一的Bean实例,存储在单例缓存中,所有对Bean的请求,返回该Bean的唯一实例。Spring对那些非线程安全的对象采用单实例模式,。

<bean id = "test" class="so.dun.Test" scope="singleton"/>

2、prototype。每次对Bean请求,都会创建一个新的Bean实例。对于有状态的Bean,应该使用prototype。

<bean id = "test" class="so.dun.Test" scope="prototype"/>

3、request。针对每个http的请求,会创建一个新的Bean实例,该实例仅在当前http request中有效。

<bean id = "test" class="so.dun.Test" scope="request"/>

4、session。针对每个http的请求,会创建一个新的Bean实例, 该实例仅在当前session中有效。当session失效是,所有在该session中的实例都失效。

<bean id = "test" class="so.dun.Test" scope="session"/>

5、global session。类似于标准的http session作用域。

<bean id = "test" class="so.dun.Test" scope="globalSession"/>

在使用后三种类型时,需要对Web容器(web.xml)进行一些配置:

1、对于低版本的Web容器

<filter>

    <tilter-name>requestContextFilter</filter-name>

    <filter-class>org.springftamework.web.filter.RequestContextFilter</filter-class>

</filter>

<filter-mapping>

    <filter-name>requestContextFilter</filter-name>

    <servlet-name>/*</servlet-name>

</filter-mapping>

2、对于高版本的Web容器

<listener>

<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>

</listener>
朗读
赞 · 0
版权属于:

IT技术分享

本文链接:

https://idunso.com/archives/241/(转载时请注明本文出处及文章链接)