spring注入型別要點
阿新 • • 發佈:2018-12-31
/** * Spring有三種注入方法: * <ul> * <li>通過明確的bean definition宣告來注入物件,缺點是無法注入 * <code>ConfigurableListableBeanFactory.registerResolvableDependency()</code> * 中註冊的物件,如<code>HttpServletRequest</code>。</li> * <li>通過autowire * byConstructor來注入物件,可以注入包括resolvableDependency在內的物件,缺點是無法將注入物件設成“optional” * ,即:物件不存在,則報錯。</li> * <li>通過autowire * byName/byType來注入物件,相當於optional注入,缺點是不能注入包括resolvableDependency在內的物件 * ,且會自動對所有property進行注入,無法精確控制,可能造成不確定情況。</li> * <li>通過<code>@Autowired</code> * annotation來注入物件,可以注入包括resolvableDependency在內的物件 * ,也可以設定optional選項。缺點是有侵入性,必須修改bean class的程式碼。Springext試圖將注入的多樣性限定在 * <code>BeanDefinitionParser</code>的範圍中,因此使用annotation不是最好的方法。</li> * </ul> * <p> * 本方法提供一個bean definition,可被<code>BeanDefinitionParser</code> * 呼叫,用來注入到的constructor arg,並支援resolvableDependency物件以及optional選項。 * </p> */