Spring Bean裝配

布still發表於2017-10-03

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

相關文章