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