Spring -- 三種配置方式
1、Explicit configuration in XML:顯示的XML配置。
優點:
1)XML配置方式進一步降低了耦合,使得應用更加容易擴充套件,即使對配置檔案進一步修改也不需要工程進行修改和重新編譯。
2)在處理大的業務量的時候,用XML配置應該更加好一些。
缺點:
1)配置檔案讀取和解析需要花費一定的時間,配置檔案過多的時候難以管理。
2)無法對配置的正確性進行校驗,增加了測試難度。
2、Explicit configuration in Java:顯示的JavaConfig,基於java類配置。
@Configuration
publicclass Conf {
@Scope(“prototype”)
@Bean(“loginUserDao”)
public LoginUserDao loginUserDao() {
returnnew LoginUserDao();
}
}
在標註了@Configuration的java類中,通過在類方法標註@Bean定義一個Bean。通過在成員變數或者方法入參處標註@Autowired按型別匹配注入,也可以使用@Qualifier按名稱配置注入。
JavaConfig is the preferred option for explicit configuration
because it’s more powerful, type-safe, and refactor-friendly
優點:
1)在class檔案中,降低維護成本。
2)不需要第三方解析工具。3)編輯期就可以檢驗正確性,提高開發效率。
缺點:
1)配置程式碼過多時,直接影響程式碼質量,對於程式碼的簡潔度有影響。
2)業務類之間的關係不如XML配置那樣容易把握。
3)如果需要修改配置,則要重新編譯整個工程。
3、Implicit bean discovery and automatic wiring:隱式的bean掃描,基於java註解配置,自動注入。
@Scope(“prototype”)
@Lazy(true)
@Component(“loginUserDao”)
publicclass LoginUserDao { }
@Component:標註一個普通的Spring Bean類在方法處通過@Autowired使方法入參繫結Bean,然後在方法中通過程式碼進行注入。
優點:
1)在class檔案中,降低維護成本。
2)不需要第三方解析工具,利用java反射機制。
3)編輯期就可以檢驗正確性,提高開發效率。
缺點:
1)如果需要對annotation進行修改,那麼要重新編譯整個工程。
2)業務類之間的關係不如XML配置那樣容易把握。
3)如果在程式中annotation比較多,直接影響程式碼質量,對於程式碼的簡潔度有影響。
4)符合條件的多個bean注入時,spring不知道如何選擇,會有異常NoUniqueBeanDefinitionException。