In
my previous post, I explained how to inject arguments to a constructor using
c-namespace. In this post, I am going to explain how to inject a bean using
c-namespace.
Example
<bean id="osho" class="com.sample.pojo.Author"> <constructor-arg name="firstName" value="Chandra Mohan" /> <constructor-arg name="lastName" value="Jain" /> <constructor-arg name="dateOfBirth" value="11 December 1931" /> <constructor-arg name="country" value="India" /> </bean> <bean id="bookOfSecrets" name="book1" class="com.sample.pojo.Book"> <constructor-arg name="author" ref="osho" /> <constructor-arg name="title" value="The Book Of Secrets" /> <constructor-arg name="noOfPages" value="1152" /> <constructor-arg name="price" value="452" /> </bean>
Notify
above snippet, I am injecting author bean into the bean with id book1. Same
snippet can be re-written using c-namespace like below.
<bean id="osho" name="osho" class="com.sample.pojo.Author" c:firstName="Chandra Mohan" c:lastName="Jain" c:dateOfBirth="11 December 1931" c:country="india" /> <bean id="bookOfSecrets" name="book1" class="com.sample.pojo.Book" c:title="Vedanta An Art of Dying" c:noOfPages="164" c:price="90" c:author-ref="osho" />
Notify
above snippet constructor argument ‘author’ of the instance book1 is defined as
c:author-ref="osho". In this case author is the argument name,
whereas the -ref part indicates that this is not a straight value but rather a
reference to another bean.
Following
is the complete working application.
Author.java
package com.sample.pojo; public class Author { private String firstName; private String lastName; private String dateOfBirth; private String country; public Author(String firstName, String lastName, String dateOfBirth, String country) { this.firstName = firstName; this.lastName = lastName; this.dateOfBirth = dateOfBirth; this.country = country; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getDateOfBirth() { return dateOfBirth; } public void setDateOfBirth(String dateOfBirth) { this.dateOfBirth = dateOfBirth; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Author [firstName=").append(firstName).append(", lastName=").append(lastName) .append(", dateOfBirth=").append(dateOfBirth).append(", country=").append(country).append("]"); return builder.toString(); } }
Book.java
package com.sample.pojo; public class Book { private String title; private int noOfPages; private float price; private Author author; public Book(String title, int noOfPages, float price, Author author){ this.title = title; this.noOfPages = noOfPages; this.price = price; this.author = author; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getNoOfPages() { return noOfPages; } public void setNoOfPages(int noOfPages) { this.noOfPages = noOfPages; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } public Author getAuthor() { return author; } public void setAuthor(Author author) { this.author = author; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Book [title=").append(title).append(", noOfPages=").append(noOfPages).append(", price=") .append(price).append(", author=").append(author).append("]"); return builder.toString(); } }
myConfiguration.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="osho" name="osho" class="com.sample.pojo.Author" c:firstName="Chandra Mohan" c:lastName="Jain" c:dateOfBirth="11 December 1931" c:country="india" /> <bean id="bookOfSecrets" name="book1" class="com.sample.pojo.Book" c:title="Vedanta An Art of Dying" c:noOfPages="164" c:price="90" c:author-ref="osho" /> </beans>
HelloWorld.java
package com.sample.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.sample.pojo.Book; public class HelloWorld { public static void main(String args[]) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "myConfiguration.xml" }); Book book = context.getBean("book1", Book.class); System.out.println(book); ((ClassPathXmlApplicationContext) context).close(); } }
Run
‘HelloWorld.java’, you can able to see following output.
Book [title=Vedanta An Art of Dying, noOfPages=164, price=90.0, author=Author [firstName=Chandra Mohan, lastName=Jain, dateOfBirth=11 December 1931, country=india]]
No comments:
Post a Comment