提交 fc9d1760 编写于 作者: J Juergen Hoeller

Revised c-namespace example

Issue: SPR-17601
上级 aab42116
...@@ -927,14 +927,14 @@ element. ...@@ -927,14 +927,14 @@ element.
[subs="verbatim,quotes"] [subs="verbatim,quotes"]
---- ----
<beans> <beans>
<bean id="thingOne" class="x.y.ThingOne"> <bean id="beanOne" class="x.y.ThingOne">
<constructor-arg ref="thingTwo"/> <constructor-arg ref="beanTwo"/>
<constructor-arg ref="thingThree"/> <constructor-arg ref="beanThree"/>
</bean> </bean>
<bean id="thingTwo" class="x.y.ThingTwo"/> <bean id="beanTwo" class="x.y.ThingTwo"/>
<bean id="thingThree" class="x.y.ThingThree"/> <bean id="beanThree" class="x.y.ThingThree"/>
</beans> </beans>
---- ----
==== ====
...@@ -1937,27 +1937,28 @@ The following example uses the `c:` namespace to do the same thing as the from ...@@ -1937,27 +1937,28 @@ The following example uses the `c:` namespace to do the same thing as the from
xsi:schemaLocation="http://www.springframework.org/schema/beans xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="thingOne" class="x.y.ThingTwo"/> <bean id="beanTwo" class="x.y.ThingTwo"/>
<bean id="thingTwo" class="x.y.ThingThree"/> <bean id="beanThree" class="x.y.ThingThree"/>
<!-- traditional declaration --> <!-- traditional declaration with optional argument names -->
<bean id="thingOne" class="x.y.ThingOne"> <bean id="beanOne" class="x.y.ThingOne">
<constructor-arg ref="thingTwo"/> <constructor-arg name="thingTwo" ref="beanTwo"/>
<constructor-arg ref="thingThree"/> <constructor-arg name="thingThree" ref="beanThree"/>
<constructor-arg value="something@somewhere.com"/> <constructor-arg name="email" value="something@somewhere.com"/>
</bean> </bean>
<!-- c-namespace declaration --> <!-- c-namespace declaration with argument names -->
<bean id="thingOne" class="x.y.ThingOne" c:thingTwo-ref="thingTwo" c:thingThree-ref="thingThree" c:email="something@somewhere.com"/> <bean id="beanOne" class="x.y.ThingOne" c:thingTwo-ref="beanTwo"
c:thingThree-ref="beanThree" c:email="something@somewhere.com"/>
</beans> </beans>
---- ----
==== ====
The `c:` namespace uses the same conventions as the `p:` one (a trailing `-ref` for bean The `c:` namespace uses the same conventions as the `p:` one (a trailing `-ref` for
references) for setting the constructor arguments by their names. Similarly, it bean references) for setting the constructor arguments by their names. Similarly,
needs to be declared even though it is not defined in an XSD schema (it exists it needs to be declared in the XML file even though it is not defined in an XSD schema
inside the Spring core). (it exists inside the Spring core).
For the rare cases where the constructor argument names are not available (usually if For the rare cases where the constructor argument names are not available (usually if
the bytecode was compiled without debugging information), you can use fallback to the the bytecode was compiled without debugging information), you can use fallback to the
...@@ -1968,12 +1969,15 @@ argument indexes, as follows: ...@@ -1968,12 +1969,15 @@ argument indexes, as follows:
[subs="verbatim,quotes"] [subs="verbatim,quotes"]
---- ----
<!-- c-namespace index declaration --> <!-- c-namespace index declaration -->
<bean id="thingOne" class="x.y.ThingOne" c:_0-ref="thingTwo" c:_1-ref="thingThree"/> <bean id="beanOne" class="x.y.ThingOne" c:_0-ref="beanTwo" c:_1-ref="beanThree"
c:_2="something@somewhere.com"/>
---- ----
==== ====
NOTE: Due to the XML grammar, the index notation requires the presence of the leading `_`, NOTE: Due to the XML grammar, the index notation requires the presence of the leading `_`,
as XML attribute names cannot start with a number (even though some IDEs allow it). as XML attribute names cannot start with a number (even though some IDEs allow it).
A corresponding index notation is also available for `<constructor-arg>` elements but
not commonly used since the plain order of declaration is usually sufficient there.
In practice, the constructor resolution In practice, the constructor resolution
<<beans-factory-ctor-arguments-resolution,mechanism>> is quite efficient in matching <<beans-factory-ctor-arguments-resolution,mechanism>> is quite efficient in matching
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册