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,則什麼事都不發生