2.3. 混合請求模式
上一節講到了FQCN(全類名)請求模式會帶來依賴定義的柔軟性較差的問題,是以字元串和全類名混合的模式又應運而生了。比如剛才的Spring中的API方式聲明注入點的例子就可以改為使用下面的API:
// Spring的字元串+全類名注入的API BeanFactory injector = new FileSystemApplicationContext("depositConfiguration.xml") this.bank = (Bank) injector.getBean("bank", Bank.class); // 請求名為"bank"且類為Bank的依賴 | |
而在Guice中則提供了更為安全、可維護性更高的基于注解模式的混合請求模式,此時辨別符不再僅僅是一個字元串,而是一個自定義的Java5注解。例如上一節中舉的Setter注入點的例子,可以用下面的方式來實作混合請求依賴:
public class Depositor { private Bank bank; // …… @Inject // bank的Setter注入點 public void setBank(@BankICBC Bank bank) { // 請求辨別符為"@BankICBC"注解并且類為Bank的依賴 // "@BankICBC"注解是一個被綁定到BankICBC.class的自定義注解 this.bank = bank; } | |