XML格式
无论是BeanFactory还是ApplicationContext都使用统一的XML格式
beans的XML说明
所有Spring容器加载XML配置文件头部说明,都需要以下DOCTYPE声明
基于DTD声明
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
...
</beans>
还有基于XML schema的文档声明。(大多用这个)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframewok.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-4.1.xsd">
...
</beans>
beans介绍
<beans>
- 包含0或者1个<description> 非必要,指定一些描述性信息
- 包含0或者多个<bean>、
- <import>、 A.xml需要b.xml的bean =》 <import resource="b.xml"/>
- <alias> 为<bean>起别名
相应的属性:
- default-lazy-init :true或者false(默认),延迟初始化
- default-autowire:no(默认)、byName、byType、constructor以及autodetect,使用哪一种默认绑定方式
…等等
bean使用
id属性:每个注册到容器的对象唯一的标志
class属性:每个注册到容器的对象通过该属性指定其类型。
用name属性:可以定义一些id不能使用的字符。但是name并不是唯一的
<bean id="djNewsListener" class="..impl.DowJonesNewsListener"></bean>
<bean id="djNewsListener" name="/news/djNewslistener,dowJonesNewsListener" class="..impl.DowJonesNewsListener"></bean>
更详细的说明看《Spring 揭秘2》
bean的scope
scope用来声明容器中的对象的存活事件,当对象不在这些scope内时,容器会销毁该对象
spring的bean 的scope类型有:
- singleton(单例模式)(默认):被标记的对象,在ioc容器只有一个共享实例,几乎与ioc容器一样的寿命
- prototype(原型模式):每次请求都会生成一个新的对象实例,但是容器不负责该对象的销毁,由请求对象负责。
- request、session、global session类型,只适用于web应用程序