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");