|
|
|
@ -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 |
|
|
|
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: |
|
|
|
[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 |
|
|
|
|