1. Bean配置项
1.1. ID
在整个IOC容器中Bean的唯一标识
1.2. Class
具体要实例化的类
1.3. Scope
范围,作用域
1.4. Constructor arguments
构造器的参数
1.5. Properties
属性
1.6. Autowiring mode
自动装配模式
1.7. lazy-initialization mode
懒加载模式
1.8. Initialization/destruction method
初始化和销毁方法
2. Bean的作用域
2.1. singleton
单例,指一个Bean容器中只存在一份
2.2. prototype
每次请求(每次使用)创建新的实例,destroy方式不生效
2.3. request
每次http请求创建一个实例且仅在当前request内有效
2.4. session
同上,每次http请求创建,当前session内有效
2.5. global session
基于portlet的web中有效(portlet定义了globao session),如果是在web中,同session
3. Bean的生命周期
3.1. 定义:
3.2. 初始化
——实现org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertiesSet方法
1 public class ExampleInitializingBean implements InitializingBean { 2 @Override 3 public void aferPropertiesSet() throws Exception { 4 // do something 5 } 6 }
——配置init-method
1 <bean id="exampleInitBean" class="examples.ExampleBean" init-method="init" />
1 public class ExampleBean { 2 public void init() { 3 // do some initialization work 4 } 5 }
3.3. 使用
3.4. 销毁
——实现org.springframework.beans.factory.DisposableBean接口,覆盖destroy方法
1 public class ExampleInitializingBean implements DisposableBean { 2 @Override 3 public void destroy() throws Exception { 4 // do something 5 } 6 }
——配置destroy-method
1 <bean id="exampleInitBean" class="examples.ExampleBean" destroy-method="cleanup" />
public class ExampleBean { public void cleanup() { // do some destruction work (like releasing pooled connections) } }
以上是针对某一Bean的处理方式,配置全局默认初始化、销毁方法
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans/spring-beans.xsd" 5 default-init-method="init" default-destroy-method="destroy"> 6 7 </beans>
4. Aware接口
Spring中提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化之后,可以获得相应资源。
通过Aware接口,可以对Spring相应资源进行操作
为对Spring进行简单的扩展提供了方便的入口。
5. Bean的自动装配
5.1. No:不做任何操作。
5.2. byname(对应ID):根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。
5.3. byType(对应class):如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配;
如果存在多个该类型bean,那么抛出异常,并指出不能使用byType方式进行自动装配;
如果没有找到相匹配的bean,则什么事都不发生。
5.4. constructor:与byType方式类似,不同之处在于它应用于构造器参数。如果容器中没有找到与构造器参数类型一致的bean,那么抛出异常。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans/spring-beans.xsd" 5 default-aotowire="byName"> 6 7 </beans>
6. Resources & ResourceLoader
针对于资源文件的统一接口。
——URLResource:URL对应的资源,根据一个URL地址即可构建
——ClassPathResource:获取类路径下的资源文件
——FileSystemResource:获取文件系统里面的资源
——ServletContextResource:ServletContext封装的资源,用于访问ServletContext环境下的资源
——InputStreamResource:针对于输入流封装的资源
——ByteArrayResource:针对于字节数组封装的资源
6.1. ResourceLoader
1 public interface ResourceLoader { 2 Resource getResource(String location); 3 }
1 Resource template = ctx.getResource("some/resource/path/myTemplate.txt"); 2 Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt"); 3 Resource template = ctx.getResource("file:/some/resource/path/myTemplate.txt");