Spring注入
Spring注入是指在启动Spring容器加载bean配置的时候,完成对变量的赋值行为
常用的两种注入方式:
- 设值注入
- 构造注入
Bean配置项及作用域
Bean的配置项
- Id
- Class
- Scope
- Constructor arguments
- Properties
- Autowiring mode
- lazy-initialization mode
- Initialization/destruction method
Bean的作用域
- singleton:单例,指一个Bean容器中只存在一份
- prototype:每次请求(每次使用)创建新的实例,destroy方式不生效
- request:每次http请求创建一个实例且仅在当前request内有效
- session:每次http请求创建一个实例且仅在当前session内有效
- global session:基于portlet的web中有效(portlet定义了global session),如果是在web中,通session
Bean的生命周期
定义
初始化
实现org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertiesSet方法
public class ExampleInitializingBean implements InitializingBean
{
public void init()
{
// do some initialization work
}
}
配置init-method
<bean id="exampleInitBean" class="examples.ExampleBean" init-method="init">
public class ExampleBean
{
public void init()
{
// do some initialization work
}
}
销毁
实现org.springframework.beans/factory.DisposableBean接口,覆盖destroy方法
public class ExampleDisposableBean implements DisposableBean
{
@Override
public void destroy()
{
// do something
}
}
配置destroy-method
<bean id="exampleInitBean" class="examples.ExampleBean" destroy-method="cleanup">
public class ExampleBean
{
public void cleanup()
{
// do some destruction work
}
}
配置全局默认初始化、销毁方法
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://wwww.springframework.org/schema/beans/spring-beans.xsd"
default-init-method="init" default-destroy-method="destroy">
</beans>
Bean的自动装配
- No:不做任何操作
- byname:根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配
- byType:如果容器中存在一个与指定类型相同的bean,那么将与该属性自动装配;如果存在多个该类型bean,那么抛出异常,并指出不能使用byType方式进行自动配置;如果没有找到相匹配的bean,则什么事都不发生