1. 程式人生 > >Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFa

Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFa

Spring  default-autowire="byName"自動配置bean注入,(刪掉了顯示配置屬性,還是可以注入,沒發現這個屬性的時候還以為是快取的問題)。

發現在spring中的Beans屬性項中,寫了這麼一段“default-autowire="byName",.

恍然大悟,配置了這個屬性項後,spring會對bean的屬性自動按name去尋找,

如果找到則set進去,而不必對Bean的屬性進行顯式的Set。

仔細想想default-autowire="byName"應該算是最差實踐吧,雖然能減少配置檔案的書寫量,可配置檔案的可讀性卻大打折扣,一 個Bean你無法知道他有那些屬性項,無法知道那些Bean與其相關,如果你碰巧修改了一個相關Bean而導致改Bean異常,估計要夠你找的。

配置檔案和程式碼一樣,應該可讀性強,清晰明瞭,一看就能明白,而default-autowire="byName"會導致配置檔案幾乎無法可讀,你無法明白這些bean之間的相互關係,如果是你自己維護還好,換個第三者來,估計要把寫配置檔案的罵個底朝天。