顿搜
Spring 配置文件简述
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>