Spring p-namespace Example
November 05, 2021
In Spring XML, p-namespace is the XML shortcut for <property>
tag to inject bean dependency. The p-namespace replaces <property>
tag in XML configuration. It is easier and clear to use and increases readability of XML configuration.
Suppose we have
<bean>
definition in XML as follows.
<bean id="comp" class="com.concretepage.bean.Company"> <property name="name" value="ABCD Ltd"/> <property name="location" value="India"/> </bean>
<property>
tag using p-namespace as follows.
<bean id="comp" class="com.concretepage.bean.Company" p:name="ABCD Ltd" p:location="India"/>
Using p-namespace
Find the XML file withp-namespace
.
app-conf.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="comp" class="com.concretepage.bean.Company" p:name="ABCD Ltd" p:location="India"/> <bean id="emp" class="com.concretepage.bean.Employee" p:empName="Ram Jethmalani" p:company-ref="comp"/> </beans>
Company.java
package com.concretepage.bean; public class Company { private String name; private String location; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } }
package com.concretepage.bean; public class Employee { private String empName; private Company company; public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } public Company getCompany() { return company; } public void setCompany(Company company) { this.company = company; } }
SpringDemo.java
package com.concretepage; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.concretepage.bean.Employee; public class SpringDemo { public static void main(String[] args) { AbstractApplicationContext context = new ClassPathXmlApplicationContext("app-conf.xml"); Employee employee=(Employee)context.getBean("emp"); System.out.println(employee.getEmpName()); System.out.println(employee.getCompany().getName()); context.close(); } }
Ram Jethmalani ABCD Ltd
constructor-arg
tag, Spring provides c-namespace shortcut. Find the link.