Spring的配置文件是用于指导Spring工程进行Bean的生产、依赖关系注入及Bean实例分发的“图纸”,它是一个或多个标准的XML文档
Spring配置文件一般结构:
<beans>
<import resource="resource.xml" />
<bean id="bean1" class="***"></bean>
<bean name="bean2" class="***"></bean>
<alias alias="bean3" name="bean2" /> (alias用于写bean的别名)
</beans>
Spring容器启动基本条件:
1.Spring的框架类包
2.Bean的配置信息
3.Bean的实现类
Bean的元数据信息:
1.Bean的实现类
2.Bean的属性信息
3.Bean的依赖关系
4.Bean的行为配置
5.Bean的创建方式
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 是为简化jee中一些功能的配置而提供的Schema
Spring-jdbc-3.0.xsd 新增的,配置内接数据库而提供的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
Spring Bean的命名:
每个Bean可以有一个或多个id,第一个id称为“标识符”,其余id叫“别名”,这些id在IOC容器中必须唯一
Bean id的命名方式:
1. 配置全限定类名,唯一
2.指定id,唯一
3.指定name,唯一
4.指定id和name,唯一
5.指定多个name,唯一
6.指定别名,唯一
Bean id的命名约定:
1.遵循xml命名规范
2.由字幕,数字,下划线组成
3.驼峰式,第二个单词及以后的单词的首个单词字母大写
创建Bean实例的方法:
使用构造器实例化Bean
使用静态工厂方法实例化Bean
使用实例工厂方法实例化Bean
构造器实例化:
最简单的方式,Spring IOC容器既能使用默认空构造器,也能使用有参数构造器两种方式创建Bean
1.空构造器实例化:
<bean id="helloServiceNoWithArgs" class="com.***.HelloWorldImpl" />
2.有参数构造器实例化:
<bean id="helloServiceWithArgs" class="com.***.HelloWorldImpl">
<constructor-arg index="0" value="Hello Spring!" />
</bean>
3.静态工厂实例化:
<bean id="helloServiceStaticFactory" class="com.***.HelloWorldStaticFactory" factory-method="newInstance">
<constructor-arg index="0" value="Hello Static Factory!" />
</bean>
4.实例工厂实例化:
<!-- 定义实例工厂Bean -->
<bean id="beanInstanceFactory" class="com.***.HelloWorldInstanceFactory" />
<!-- 使用实例工厂Bean创建Bean -->
<bean id="helloWorldInstance" factory-bean="beanInstanceFactory" factory-method="newInstance">
<constructor-arg index="0" value="Hello Instance Factory!" />
</bean>
Spring Bean的作用域:
配置文件中“scope”属性,在面向对象程序设计中一般指对象或变量之间的可见范围
Bean的作用域类型与配置:
singleton:<bean id="userInfo" class="com.***.UserInfo" scope="singleton"></bean> 无状态的bean使用
prototype:<bean id="userInfo" class="com.***.UserInfo" scope="prototype"></bean> 有状态的bean使用
request:<bean id="userInfo" class="com.***.UserInfo" scope="request"></bean> 针对每一次的HTTP的请求
session:<bean id="userInfo" class="com.***.UserInfo" scope="session"></bean> 针对某个HTTP session来起作用
global session:<bean id="userInfo" class="com.***.UserInfo" scope="globalSession"></bean> 类似于标准的HTTP session作用域,有局限性
自定义作用域:
实现自定义Scope类:org.springframework.beans.factory.config.Scope
注册自定义Scope类:ConfigurableBeanFactory.registerScope(String scopeName, Scope scope)
使用自定义的Scope:
Scope customScope = new ThreadScope();
beanFactory.registerScope("thread", customeScope);
<bean id="***" class="***" scope="scopeName" />
Spring配置文件一般结构:
<beans>
<import resource="resource.xml" />
<bean id="bean1" class="***"></bean>
<bean name="bean2" class="***"></bean>
<alias alias="bean3" name="bean2" /> (alias用于写bean的别名)
</beans>
Spring容器启动基本条件:
1.Spring的框架类包
2.Bean的配置信息
3.Bean的实现类
Bean的元数据信息:
1.Bean的实现类
2.Bean的属性信息
3.Bean的依赖关系
4.Bean的行为配置
5.Bean的创建方式
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 是为简化jee中一些功能的配置而提供的Schema
Spring-jdbc-3.0.xsd 新增的,配置内接数据库而提供的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
Spring Bean的命名:
每个Bean可以有一个或多个id,第一个id称为“标识符”,其余id叫“别名”,这些id在IOC容器中必须唯一
Bean id的命名方式:
1. 配置全限定类名,唯一
2.指定id,唯一
3.指定name,唯一
4.指定id和name,唯一
5.指定多个name,唯一
6.指定别名,唯一
Bean id的命名约定:
1.遵循xml命名规范
2.由字幕,数字,下划线组成
3.驼峰式,第二个单词及以后的单词的首个单词字母大写
创建Bean实例的方法:
使用构造器实例化Bean
使用静态工厂方法实例化Bean
使用实例工厂方法实例化Bean
构造器实例化:
最简单的方式,Spring IOC容器既能使用默认空构造器,也能使用有参数构造器两种方式创建Bean
1.空构造器实例化:
<bean id="helloServiceNoWithArgs" class="com.***.HelloWorldImpl" />
2.有参数构造器实例化:
<bean id="helloServiceWithArgs" class="com.***.HelloWorldImpl">
<constructor-arg index="0" value="Hello Spring!" />
</bean>
3.静态工厂实例化:
<bean id="helloServiceStaticFactory" class="com.***.HelloWorldStaticFactory" factory-method="newInstance">
<constructor-arg index="0" value="Hello Static Factory!" />
</bean>
4.实例工厂实例化:
<!-- 定义实例工厂Bean -->
<bean id="beanInstanceFactory" class="com.***.HelloWorldInstanceFactory" />
<!-- 使用实例工厂Bean创建Bean -->
<bean id="helloWorldInstance" factory-bean="beanInstanceFactory" factory-method="newInstance">
<constructor-arg index="0" value="Hello Instance Factory!" />
</bean>
Spring Bean的作用域:
配置文件中“scope”属性,在面向对象程序设计中一般指对象或变量之间的可见范围
Bean的作用域类型与配置:
singleton:<bean id="userInfo" class="com.***.UserInfo" scope="singleton"></bean> 无状态的bean使用
prototype:<bean id="userInfo" class="com.***.UserInfo" scope="prototype"></bean> 有状态的bean使用
request:<bean id="userInfo" class="com.***.UserInfo" scope="request"></bean> 针对每一次的HTTP的请求
session:<bean id="userInfo" class="com.***.UserInfo" scope="session"></bean> 针对某个HTTP session来起作用
global session:<bean id="userInfo" class="com.***.UserInfo" scope="globalSession"></bean> 类似于标准的HTTP session作用域,有局限性
自定义作用域:
实现自定义Scope类:org.springframework.beans.factory.config.Scope
注册自定义Scope类:ConfigurableBeanFactory.registerScope(String scopeName, Scope scope)
使用自定义的Scope:
Scope customScope = new ThreadScope();
beanFactory.registerScope("thread", customeScope);
<bean id="***" class="***" scope="scopeName" />