1、Explicit configuration in XML:顯示的XML配置。
優點:
1)XML配置方式進一步降低了耦合,使得應用更加容易擴展,即使對配置文件進一步修改也不需要工程進行修改和重新編譯。
2)在處理大的業務量的時候,用XML配置應該更加好一些。
缺點:
1)配置文件讀取和解析需要花費一定的時間,配置文件過多的時候難以管理。
2)無法對配置的正確性進行校驗,增加了測試難度。
2、Explicit configuration in Java:顯示的JavaConfig,基於java類配置。
@Configuration
public class Conf {
@Scope(“prototype”)
@Bean(“loginUserDao”)
public LoginUserDao loginUserDao() {
return new 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”)
public class LoginUserDao { }
@Component:標注一個普通的Spring Bean類
在方法處通過@Autowired使方法入參綁定Bean,然后在方法中通過代碼進行注入。
優點:
1)在class文件中,降低維護成本。
2)不需要第三方解析工具,利用java反射機制。
3)編輯期就可以檢驗正確性,提高開發效率。
缺點:
1)如果需要對annotation進行修改,那么要重新編譯整個工程。
2)業務類之間的關系不如XML配置那樣容易把握。
3)如果在程序中annotation比較多,直接影響代碼質量,對於代碼的簡潔度有影響。
4)符合條件的多個bean注入時,spring不知道如何選擇,會有異常NoUniqueBeanDefinitionException。