1. 程式人生 > >spring注入型別要點

spring注入型別要點

    /**
     * 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>
     */