spring 配置檔案屬性

2021-07-04 08:39:45 字數 4790 閱讀 4519

首先 bean 屬性內容:

scope 屬性是幹嗎用的? 

scope=singleton 是預設值,通過設定scope=prototype 每次指定名稱取得bean時 都會產生乙個新得例項。

singleton="true"

factory-method: bean的例項化中 ,預設情況下呼叫的是 類的預設構造方法,即無引數的構造方法。
例如

這種方式採用的是預設的構造方法,構造testuser物件
這種方式採用的是createuser 

方法,構造testuser物件

init-method:   bean 物件得初始化方法名稱
destroy-method:  bean 物件的銷毀方法名稱
如果所有物件都有相同的 初始化名稱,或者銷毀名稱 ,則可以再 上定義 default-init-method="init"    default-destroy-method="destroy"
lazy-init="default" :
lazy-init

以上兩個bean,乙個lazy-init屬性為true,乙個為false,由什麼區別呢

當 ioc容器啟動時,service2會例項化,而service1則不會;但是但容器例項化service2時,service1也被例項化了,為什麼呢,因為service2需要它。也就是說lazy-init="true"的bean,ioc容器啟動時不會例項化該bean,只有當容器需要用到時才例項化它。lazy-init有利於容器效率,對於不需要的bean可以先不管。

abstract="true"

class="org.springframework.transaction.interceptor.transactionproxyfactorybean"

abstract="true">

……bean abstract="true"時,該bean不會被例項化,上面的bean是個模板

default-lazy-init="true":

spring的容器是提供了lazy-load的,即預設的預設設定是bean沒有lazy-load,該屬性處於false狀態,這樣導致spring在啟動過程導致在啟動時候,會預設載入整個物件例項圖,從初始化action配置、到service配置到dao配置、乃至到資料庫連線、事務等等。

這麼龐大的規模,難怪spring的啟動時間要花將近1分鐘。嘗試了一下,把beans的default-lazy-init改為true就,再次啟動,速度從原來的55秒,降到8秒鐘!!great!雖然是非常小乙個改動,但是影響確實非常大。

這樣做只是為了在開發過程中節約啟動時間,在部署到實際環境中,倒是沒必要設定default-lazy-init為true。畢竟部署到實際環境中不是經常的事,每次啟動1分鐘倒不是大問題,而且可以提高伺服器效率

parent="testuser" :表示繼承,繼承父類的設定
depends-on="testuser": 在例項化bean之前 如果依賴於另乙個bean ,那麼spring就會先去例項化被依賴的bean 並進行依賴注入,如果某個bean在生成之前要求另外乙個bean先被例項,則可以指定depends-on 屬性來設定 ,如果有兩個以上的bean 要設定在depends-on中 用逗號隔開。
l例如:depends-on="testuser"

/>

autowire="bytype": 表示屬性內容自動繫結,根據屬性型別來繫結預設值
autowire="autodetect"
autowire="constructor"

dependency-check="default": 檢查某些依賴關係是否確立。
dependency-check="******"
dependency-check="objects"
dependency-check="all"
dependency-check="none" :  none 是預設值

首先 bean 屬性內容:

scope 屬性是幹嗎用的? 

scope=singleton 是預設值,通過設定scope=prototype 每次指定名稱取得bean時 都會產生乙個新得例項。

singleton="true"

可以利用容器的scope="prototype"來保證每乙個請求有乙個單獨的action來處理,		避免struts中action的執行緒安全問題。這句話怎麼理解呢如果用單例方式會有什麼樣的結果呢???
spring 預設scope 是單例模式

這樣只會建立乙個action物件,每次訪問都是同乙個action物件,資料不安全

struts2 是要求 每次次訪問 都對應不同的action , scope="prototype" 可以保證 當有請求的時候 都建立乙個action物件

factory-method: bean的例項化中 ,預設情況下呼叫的是 類的預設構造方法,即無引數的構造方法。
例如

這種方式採用的是預設的構造方法,構造testuser物件
這種方式採用的是createuser 

方法,構造testuser物件

init-method:   bean 物件得初始化方法名稱
destroy-method:  bean 物件的銷毀方法名稱
如果所有物件都有相同的 初始化名稱,或者銷毀名稱 ,則可以再 上定義 default-init-method="init"    default-destroy-method="destroy"
lazy-init="default" :
lazy-init

以上兩個bean,乙個lazy-init屬性為true,乙個為false,由什麼區別呢

當 ioc容器啟動時,service2會例項化,而service1則不會;但是但容器例項化service2時,service1也被例項化了,為什麼呢,因為service2需要它。也就是說lazy-init="true"的bean,ioc容器啟動時不會例項化該bean,只有當容器需要用到時才例項化它。lazy-init有利於容器效率,對於不需要的bean可以先不管。

abstract="true"

class="org.springframework.transaction.interceptor.transactionproxyfactorybean"

abstract="true">

……bean abstract="true"時,該bean不會被例項化,上面的bean是個模板

default-lazy-init="true":

spring的容器是提供了lazy-load的,即預設的預設設定是bean沒有lazy-load,該屬性處於false狀態,這樣導致spring在啟動過程導致在啟動時候,會預設載入整個物件例項圖,從初始化action配置、到service配置到dao配置、乃至到資料庫連線、事務等等。

這麼龐大的規模,難怪spring的啟動時間要花將近1分鐘。嘗試了一下,把beans的default-lazy-init改為true就,再次啟動,速度從原來的55秒,降到8秒鐘!!great!雖然是非常小乙個改動,但是影響確實非常大。

這樣做只是為了在開發過程中節約啟動時間,在部署到實際環境中,倒是沒必要設定default-lazy-init為true。畢竟部署到實際環境中不是經常的事,每次啟動1分鐘倒不是大問題,而且可以提高伺服器效率

parent="testuser" :表示繼承,繼承父類的設定
depends-on="testuser": 在例項化bean之前 如果依賴於另乙個bean ,那麼spring就會先去例項化被依賴的bean 並進行依賴注入,如果某個bean在生成之前要求另外乙個bean先被例項,則可以指定depends-on 屬性來設定 ,如果有兩個以上的bean 要設定在depends-on中 用逗號隔開。
l例如:depends-on="testuser"

/>

autowire="bytype": 表示屬性內容自動繫結,根據屬性型別來繫結預設值
autowire="autodetect"
autowire="constructor"

dependency-check="default": 檢查某些依賴關係是否確立。
dependency-check="******"
dependency-check="objects"
dependency-check="all"
dependency-check="none" :  none 是預設值

Spring 配置檔案 屬性 引數

1 value元素 元素通過字串來指定屬性或構造器引數的值。com.mysql.jdbc.driver jdbc mysql localhost 3306 mydb root 2 idref元素 idref元素用來將容器內其它bean的id傳給或元素,同時提供錯誤難功能。等同於 thetargetb...

struts配置檔案屬性講解

上面 片段配置了乙個常用屬性 struts.custom.i18n.resources,該屬性指定了應用所需的國際化資源檔案的basename為mess。提示 struts 2提供了兩種方式來管理struts 2的屬性 既可以通過struts.properties檔案來配置struts 2屬性,也可...

springboot讀取配置檔案屬性

比如xiao.zg.host 127.0.0.1 username xzg85586537 那麼就建立乙個檔案 data configurationproperties prefix xiao.zg 配置檔案的字首 public class xiaoproperties string host st...