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