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

posted @ 2012-06-01 10:51  zhwj184  阅读(145)  评论(0编辑  收藏  举报