Blog Image

Example On Inner Bean  

In this blog we are going to discuss about Inner beans while working with Configuration-Approach of Spring.

To manage dependencies between the classes in Spring we need to declare the classes as Bean Definitions in Spring Bean Configuration File and should inject them via <property/> (or) <constructor-arg/> as reference.

In case of Inner beans, we declare the dependent bean inside the <property/> (or) <constructor-arg/> of target bean as shown below.

Let us See the example on Inner Beans and how we can use in our projects lets explore.

Technologies used :-
 1) java (1.8).
 2) maven (3.5.2).
 3) Spring (4.0.0).

Project Structure

Execute below command for creating maven project.
mvn archetype:generate -DgroupId=com.sjg
-DartifactId=example-on-Inner-Bean
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false

Below is the maven project structure with packages and java src files.

Classes
BiCycle.java
package com.sjg.beans;

public class BiCycle {
    private Chain chain;

    public void setChain(Chain chain) {
        this.chain = chain;
    }

    @Override
    public String toString() {
        return "BiCycle [chain=" + chain + "]";
    }

}
Chain.java
package com.sjg.beans;

public class Chain {
    private int id;
    private String manufacturer;

    public void setId(int id) {
        this.id = id;
    }

    public void setManufacturer(String manufacturer) {
        this.manufacturer = manufacturer;
    }

    @Override
    public String toString() {
        return "Chain [id=" + id + ", manufacturer=" + manufacturer + "]";
    }

}
application-context.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";
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">;

    <bean id="biCycle" class="com.sjg.beans.BiCycle">
        <property name="chain">
            <bean class="com.sjg.beans.Chain">
                <property name="id" value="19" />
                <property name="manufacturer" value="atlas" />
            </bean>
        </property>
    </bean>
</beans>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">;
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.sjg</groupId>
  <artifactId>example-on-Inner-Beans</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>example-on-Inner-Beans</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.srimanjavagroup.com</url>;

 <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.0.0.RELEASE</version>
        </dependency>
    </dependencies>
</project>
Test.java
package com.sjg.test;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import com.sjg.beans.BiCycle;

public class Test {
    public static void main(String[] args) {
        BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/sjg/common/application-context.xml"));
        BiCycle biCycle = factory.getBean("biCycle", BiCycle.class);
        System.out.println(biCycle);
    }

}

Please find attached the example_on_Inner_Beans.zip as an maven project as a reference. Feel free to pass your comments in the blog.

About author

User Image
Sriman

A software developer on JDK and JEE platform. I am passionate about Java technology and always an explorer and learner in new technologies in Java. I have experience on Open Source technologies like Struts, Spring, Jsf etc.. and even strong knowledge on Integration/Distributed world like Ejb, Web Services and Restful Services.

0

-Comments

Be the first person to write a comment for this Blog
Load More

No More Comments

Leave a Comment

Your comment has been posted and will appear soon.