<p>Injecting Inner Beans in the Spring means beans that are defined within the scope of another bean whenever a bean is used for only one particular property. It&#8217;s advise to declare it as an inner bean.It supported in setter injection and constructor injection.</p>
<div dir="ltr" style="text-align: justify;">
<div dir="ltr" style="text-align: justify;">
<div dir="ltr" style="text-align: justify;">
<div id="ads-id" align="center"></div>
<div class="separator" style="clear: both; text-align: center;"><img src="https://dineshonjava.com/wp-content/uploads/2012/06/injecting-inner-beans-in-spring.jpg" border="0" /></div>
<p><b><i>@ImageSource-SlideShare.net</i></b></p>
<p>In the <a href="https://dineshonjava.com/constructor-object-injecting/">previous chapter</a> you have seen that how to <a href="https://dineshonjava.com/constructor-object-injecting/">inject on object been</a>(point) to another bean(triangle) with using <b><a style="color: #274e13;" href="https://dineshonjava.com/constructor-object-injecting/">setter-injection</a></b> methodology. Here we discuss same example with the concept of the <b>injecting inner bean</b>. Inner Bean means bean with in the bean i.e one bean(point) defined inside the another bean(triangle).</p>
<div style="background-color: #f2f9fc; border: 1px solid #c9e6f2; border-radius: 3px; padding: 16px; line-height: 1.45;"><span style="color: red; font-size: x-large; text-align: center;"><b>Popular Tutorials</b></span></p>
<ul style="text-align: left;">
<li><b><a href="https://dineshonjava.com/spring-tutorial/"><em><strong>Spring Tutorial</strong> </em></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-web-mvc-framework-chapter-38/"><strong><em>Spring MVC Web Tutorial </em></strong></a></b></li>
<li><b><a href="https://dineshonjava.com/introduction-to-spring-boot-a-spring-boot-complete-guide/"><strong>Spring Boot Tutorial</strong> </a></b></li>
<li><b><a href="https://dineshonjava.com/spring-security-take-baby-step-to-secure/"><em>Spring Security Tutorial</em></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-tutorial-with-example-aspect-advice-pointcut-joinpoint/"><em>Spring AOP Tutorial</em></a></b></li>
<li><b><a href="https://dineshonjava.com/using-spring-jdbc-framework-chapter-32/"><em>Spring JDBC Tutorial</em></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-hateoas-hypermedia-driven-restful-web-service/"><em><strong>Spring HATEOAS </strong></em></a></b></li>
<li><b><a href="https://dineshonjava.com/microservices-with-spring-boot/"><em><strong>Microservices with Spring Boot</strong></em></a></b></li>
<li><b><a href="https://dineshonjava.com/jax-rs-web-service-tutorial/"><strong><em>REST Webservice</em> </strong></a></b></li>
<li><b><a href="https://dineshonjava.com/core-java-baby-step-to-be-best-java-ian/"><em><strong>Core Java </strong></em></a></b></li>
<li><b><a href="https://dineshonjava.com/hibernate-3-on-baby-steps/"><em><strong>Hibernate Tutorial</strong></em></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-batch-process-with-example/"><strong><em>Spring Batch</em> </strong></a></b></li>
</ul>
</div>
<p>In the <b>bean configuration</b> file(<b>spring.xml</b>) there are four beans(<b>ids are triangle, pointA, pointB and pointC</b>) defined in the <a href="https://dineshonjava.com/2012/06/constructor-object-injecting.html">previous chapter</a> suppose that beans (<b>pointB and pointC</b>) of the <b>Point </b>class are using only for <b>triangle</b> bean definition then there no need to defined the <b>Point </b>been in separately in the <a href="https://dineshonjava.com/2012/06/what-is-bean-factory-in-spring.html"><b>bean configuration</b></a> file(<b>spring.xml</b>) and <b>pointA </b>is the common point using by different shape as Circle, Rectangle etc si its defined separately in the <a href="https://dineshonjava.com/2012/06/what-is-bean-factory-in-spring.html"><b>bean configuration</b></a> file(<b>spring.xml</b>). The best idea at this situation we have to defined Point bean &#8216;s definition as inner bean definition with in the Triangle bean.</p>
<pre class="highlight"><;bean class="com.dineshonjava.sdnext.innerBean.tutorial.Triangle" id="triangle">; 
 <;property name="pointA" ref="pointA">;<;/property>; 
 <;property name="pointB">; 
 <;bean class="com.dineshonjava.sdnext.innerBean.tutorial.Point">; 
 <;property name="x" value="-20">;<;/property>; 
 <;property name="y" value="0">;<;/property>; 
 <;/bean>; 
 <;/property>; 
 <;property name="pointC">; 
 <;bean class="com.dineshonjava.sdnext.innerBean.tutorial.Point">; 
 <;property name="x" value="20">;<;/property>; 
 <;property name="y" value="0">;<;/property>; 
 <;/bean>; 
 <;/property>; 
<;/bean>; 
<;bean class="com.dineshonjava.sdnext.innerBean.tutorial.Point" id="pointA">; 
 <;property name="x" value="0">;<;/property>; 
 <;property name="y" value="0">;<;/property>; 
<;/bean>; 
</pre>
<p> ;</p>
<div style="color: #274e13;">Lets see with example..</div>
<p><b>Triangle.java</b></p>
<pre class="highlight">package com.dineshonjava.sdnext.innerBean.tutorial; 
 
public class Triangle 
{ 
 private Point pointA; 
 private Point pointB; 
 private Point pointC; 
 
 /** 
 * @param pointA the pointA to set 
 */ 
 public void setPointA(Point pointA) { 
 this.pointA = pointA; 
 } 
 
 /** 
 * @param pointB the pointB to set 
 */ 
 public void setPointB(Point pointB) { 
 this.pointB = pointB; 
 } 
 
 /** 
 * @param pointC the pointC to set 
 */ 
 public void setPointC(Point pointC) { 
 this.pointC = pointC; 
 } 
 
 public void draw() 
 { 
 System.out.println("PointA is ("+pointA.getX()+", "+pointA.getY()+")"); 
 System.out.println("PointB is ("+pointB.getX()+", "+pointB.getY()+")"); 
 System.out.println("PointC is ("+pointC.getX()+", "+pointC.getY()+")"); 
 } 
} 
</pre>
<p><b>Point.java</b></p>
<pre class="highlight">package com.dineshonjava.sdnext.innerBean.tutorial; 
 
public class Point 
{ 
 private int x; 
 private int y; 
 /** 
 * @return the x 
 */ 
 public int getX() { 
 return x; 
 } 
 /** 
 * @param x the x to set 
 */ 
 public void setX(int x) { 
 this.x = x; 
 } 
 /** 
 * @return the y 
 */ 
 public int getY() { 
 return y; 
 } 
 /** 
 * @param y the y to set 
 */ 
 public void setY(int y) { 
 this.y = y; 
 } 
} 
</pre>
<div style="color: #274e13;">Now see how to define beans as inner beans in the following files.</div>
<p><b>Spring.xml</b></p>
<pre class="highlight"><;beans class="com.sdnext.innerBean.tutorial.Triangle" triangle="triangle" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:> 
<b>DrawingApp.java</b> 
<pre class="highlight">package com.dineshonjava.sdnext.innerBean.tutorial; 
 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
 
/** 
 * @author Dinesh Rajput 
 * 
 */ 
public class DrawingApp 
{ 
 /** 
 * @param args 
 */ 
 public static void main(String[] args) 
 { 
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); 
 Triangle triangle = (Triangle) context.getBean("triangle"); 
 triangle.draw(); 
 } 
 
} 
</pre>
<p> ;</p>
<div style="color: #274e13;">
<p>Run the application and we get same output as previous</p>
</div>
<div style="background-color: #ff99cc; border-width: thin; border: solid;">
<div style="color: blue;"><b>output:</b></div>
<div style="color: red;">Jun 23, 2012 12:30:25 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh</div>
<div style="color: red;">INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@ab50cd: startup date [Sat Jun 23 12:30:25 IST 2012]; root of context hierarchy</div>
<div style="color: red;">Jun 23, 2012 12:30:26 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions</div>
<div style="color: red;">INFO: Loading XML bean definitions from class path resource [spring.xml]</div>
<div style="color: red;">Jun 23, 2012 12:30:26 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons</div>
<div style="color: red;">INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@14c1103: defining beans [triangle,zeroPoint,Point2,Point3]; root of factory hierarchy</div>
<p><b>PointA is (0, 0)</b><br />
<b>PointB is (-20, 0)</b><br />
<b>PointC is (20, 0)</b></p>
</div>
</div>
<p> ;</p>
<div style="color: blue;"><i><b>Aliases of Bean</b></i>:</div>
<p><b style="color: #274e13;">Aliase</b> is way in which to give different name to the same bean. The reason for that naming of same bean used as different as per as our naming convention in our application requirement. In the Bean Configuration file<b>(spring.xml)</b> we have defined as the following.</p>
<pre class="highlight"><;beans>; 
 ---- 
 <;bean class="com.dineshonjava.sdnext.innerBean.tutorial.Triangle" id="triangle">; 
 ----- 
 ----- 
 <;/bean>; 
 <;bean ---="">; 
 ---- 
 <;/bean>; 
 
 <;alias alias="triangleAlias" name="triangle">; 
<;/alias>;<;/beans>; 
</pre>
<div style="color: #274e13;">Here <b>alias </b>element has two attribute one is <b>name </b>and another is <b>alias</b>. <b>name </b>attribute has the value of<b> id of which bean required to alias</b>. <b>alias </b>attribute has the value what ever you want call as alias.</div>
<div style="color: #274e13;">Here attribute <b>name </b>has the value <b>"triangle"(id of triangle bean)</b> and <b>alias </b>attribute has the value <b>"triangleAlias"</b> and get this bean in our application as following way.</div>
<pre class="highlight">ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); 
Triangle triangle = (Triangle) context.getBean("triangleAlias"); 
triangle.draw(); 
</pre>
<div style="color: blue;"><i><b>Difference between ref and idref: </b></i>In <i><b>ref </b></i>can have the value of <b><i>id of bean</i></b> as well as <b><i>name of the bean</i></b>.</div>
<div style="color: blue;">But the <i><b>idref </b></i>can have only and only <i><b>id of the bean</b></i>.</div>
<div style="color: #274e13;"><b>Using <i>ref</i>:</b></div>
<pre class="highlight"><;bean class="com.sdnext.innerBean.tutorial.Triangle" id="triangle">; 
<;property name="pointA" ref="zeroPoint">;<;/property>; 
<;/bean>; 
<;bean class="com.dineshonjava.sdnext.innerBean.tutorial.Point" name="zeroPoint">; 
<;/bean>;</pre>
<div style="color: #274e13;"><b>Using <i>idref</i>:</b></div>
<pre class="highlight"><;bean class="com.sdnext.innerBean.tutorial.Triangle" id="triangle">; 
<;property name="pointA">; 
<;idref bean="zeropoint">; 
<;/idref>; 
<;/property>; 
<;/bean>; 
<;bean class="com.dineshonjava.sdnext.innerBean.tutorial.Point" id="zeroPoint">; 
<;/bean>;</pre>
<p><b>In <a href="https://dineshonjava.com/2012/06/injecting-collection-in-spring.html">Next Chapter</a> we will discuss about </b><a href="https://dineshonjava.com/2012/06/injecting-collection-in-spring.html"><b>Injecting Collection to Beans in Spring with Example</b></a><b> in Application.</b></p>
<div style="background-color: #f2f9fc; border-radius: 3px; border: 1px solid #c9e6f2; line-height: 1.45; padding: 16px;"><span style="color: red; font-size: x-large; text-align: center;"><b>Spring Related Topics you may like</b></span></p>
<ul>
<li><b><a href="https://dineshonjava.com/interview-questions-on-spring/"><span style="color: red;">Spring Interview Questions and Answers</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-interview-questions-and-answers/"><span style="color: red;">Spring AOP Interview Questions and Answers</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-mvc-interview-questions-and-answers/"><span style="color: red;">Spring MVC Interview Questions</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-security-interview-questions-and-answers/"><span style="color: red;">Spring Security Interview Questions and Answers</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-rest-web-services-interview-questions-and-answers/"><span style="color: red;">Spring REST Interview Questions and Answers</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-boot-interview-questions-and-answers/"><span style="color: red;">Spring Boot Interview Questions and Answers</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-boot-microservices-interview-questions-answers/"><span style="color: red;">Spring Boot Microservices Interview Questions and Answers</span></a></b></li>
<li><b><a href="https://dineshonjava.com/dependency-injection-in-spring/"><span style="color: red;">Dependency Injection (DI) in Spring </span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-ioc-container/"><span style="color: red;">Spring IoC Container</span></a></b></li>
<li><b><a href="https://dineshonjava.com/what-is-bean-factory-in-spring/"><span style="color: red;">What is Bean Factory in Spring</span></a></b></li>
<li><b><a href="https://dineshonjava.com/application-context-in-spring/"><span style="color: red;">ApplicationContext in Spring</span></a></b></li>
<li><b><a href="https://dineshonjava.com/bean-autowiring-in-spring/"><span style="color: red;">Bean Autowiring in Spring</span></a></b></li>
<li><b><a href="https://dineshonjava.com/understanding-bean-scopes/"><span style="color: red;">Spring Bean Scopes</span></a></b></li>
<li><b><a href="https://dineshonjava.com/create-custom-bean-scope-in-spring-example/"><span style="color: red;">Create Custom Bean Scope in Spring Example</span></a></b></li>
<li><b><a href="https://dineshonjava.com/using-applicationcontextaware-in-spring/"><span style="color: red;">Using ApplicationContextAware in Spring</span></a></b></li>
<li><b><a href="https://dineshonjava.com/bean-lifecycle-and-callbacks/"><span style="color: red;">Spring Bean Life Cycle and Callbacks</span></a></b></li>
<li><b><a href="https://dineshonjava.com/writing-beanpostprocessor-in-spring/"><span style="color: red;">BeanPostProcessor in Spring</span></a></b></li>
<li><b><a href="https://dineshonjava.com/writing-beanfactorypostprocessor-in/"><span style="color: red;">BeanFactoryPostProcessor in Spring</span></a></b></li>
<li><b><a href="https://dineshonjava.com/annotations-in-spring-and-based/"><span style="color: red;"> Annotations in Spring and Based Configuration</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-jsr-250-annotations/"><span style="color: red;">Spring JSR-250 Annotations</span></a></b></li>
<li><b><a href="https://dineshonjava.com/jsr-330-annotations-in-spring/"><span style="color: red;">JSR 330 Annotations in Spring</span></a></b></li>
<li><b><a href="https://dineshonjava.com/stereotype-annotations-in-spring/"><span style="color: red;">Spring @Component, @Repository, @Service and @Controller Stereotype Annotations</span></a></b></li>
<li><b><a href="https://dineshonjava.com/method-injection-with-spring-using-lookup-method-property/"><span style="color: red;">Method injection with Spring using Lookup method property</span></a></b></li>
<li><b><a href="https://dineshonjava.com/introduction-to-aop-in-spring/"><span style="color: red;">Spring AOP-Introduction to Aspect Oriented Programming</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aspect-annotation/"><span style="color: red;">@Aspect Annotation in Spring</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-aspectj-before-annotation-advice-example/"><span style="color: red;"> Spring AOP AspectJ @Before Annotation Advice Example<br />
</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-before-advice-example-using-xml-config/"><span style="color: red;"> Spring AOP Before Advice Example using XML Config</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-aspectj-after-annotation-advice-example/"><span style="color: red;"> Spring AOP AspectJ @After Annotation Advice Example</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-after-advice-example-using-xml-config/"><span style="color: red;"> Spring AOP After Advice Example using XML Config</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-aspectj-after-returning-annotation-advice-example/"><span style="color: red;"> Spring AOP AspectJ @AfterReturning Annotation Advice Example</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-after-returning-advice-example-using-xml-config/"><span style="color: red;"> Spring AOP After-Returning Advice Example using XML Config</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-aspectj-after-throwing-annotation-advice-example/"><span style="color: red;"> Spring AOP AspectJ @AfterThrowing Annotation Advice Example</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-after-throwing-advice-example-using-xml-config/"><span style="color: red;"> Spring AOP After Throwing Advice Example using XML Config</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-aspectj-around-annotation-advice-example/"><span style="color: red;"> Spring AOP AspectJ @Around Annotation Advice Example</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-around-advice-example-using-xml-config/"><span style="color: red;"> Spring AOP Around Advice Example using XML Config</span></a></b></li>
<li><b><a href="https://dineshonjava.com/understanding-aop-proxies-chapter-31/"><span style="color: red;">Spring AOP Proxies in Spring</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-transaction-management-in/"><span style="color: red;"> Spring AOP Transaction Management in Hibernate</span></a></b></li>
<li><b><a href="https://dineshonjava.com/transaction-management-in-spring/"><span style="color: red;">Spring Transaction Management</span></a></b></li>
<li><b><a href="https://dineshonjava.com/declarative-transaction-management/"><span style="color: red;">Spring Declarative Transaction Management Example</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-aop-ordering-of-aspects-with-example/"><span style="color: red;">Spring AOP-Ordering of Aspects with Example</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-security-java-based-configuration-with-example/"><span style="color: red;">Spring Security Java Based Configuration with Example</span></a></b></li>
<li><b><a href="https://dineshonjava.com/spring-security-xml-namespace-configuration-example/"><span style="color: red;">Spring Security XML Namespace Configuration Example</span></a></b></li>
</ul>
<p> ;</p>
</div>
</div>
</div>
<div class="wp-post-navigation"> 
									 <div class="wp-post-navigation-pre"> 
									 <a href="https://dineshonjava.com/constructor-object-injecting/">Previous</a> 
									 </div> 
									 <div class="wp-post-navigation-next"> 
									 <a href="https://dineshonjava.com/injecting-collection-in-spring/">Next</a> 
									 </div> 
									</div>
<script type="text/javascript">
jQuery(document).ready(function($) {
 $.post('https://dineshonjava.com/wp-admin/admin-ajax.php', {action: 'mts_view_count', id: '675'});
});
</script>
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…