Background
In one of the previous post on Spring Dependency Injection we saw how beans are created. We also saw c namespace and how to use it.
- For values as dependency (like simple String) you can do <property name="brand" value="MRF"/> or <property name="bat" ref="myBat"/>
- Instead of using property tag you can also use p namespace - <bean id="cricket" class="Cricket" p:brand="MRF" p:bat-ref="myBat" /> (don't forget to add the namespace)
- Also note p namespace does not have any schema reference.
Entire Spring configuration bean looks like -
1 2 3 4 5 6 7 8 9 10 | <?xml version= "1.0" encoding= "UTF-8" ?> <beans xmlns= "http://www.springframework.org/schema/beans" xsi:schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans.xsd"> <bean id= "cricket" class = "com.osfg.Cricket" p:brand= "MRF" p:bat-ref= "myBat" /> </beans> |
In this post we will see what c name space is and how to use it.
Spring 3.1 Constructor Namespace
As you already know by now you can do dependency injection by setters or by constructor - setter injection and constructor injection.
Let's see a simple example of constructor based dependency injection.
1 2 3 4 5 6 7 8 9 10 | <?xml version= "1.0" encoding= "UTF-8" ?> <beans xmlns= "http://www.springframework.org/schema/beans" xsi:schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans.xsd"> <bean id= "cricket" class = "com.osfg.Cricket" > <constructor-arg value= "MRF" /> <constructor-arg ref= "myBat" /> </bean> |
</beans>
NOTE : The <constructor-arg> tag could take type and index to reduce ambiguity, but not name.
You can simplify above xml using c namespace
1 2 3 4 5 6 7 8 9 10 11 12 | <?xml version= "1.0" encoding= "UTF-8" ?> <beans xmlns= "http://www.springframework.org/schema/beans" xsi:schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans.xsd"> <bean id= "cricket" class = "com.osfg.Cricket" c:brand= "MRF" c:ref-bat= "myBat" /> </beans> |
NOTE : Both the “p” ad “c” namespaces do not have a schema reference in the XML header.