Header Ads

ad

ByName mode of Autowiring

Autowire-ByName

>> It performs setter injection
>> For this, all target class property names and dependent class bean ids must match.
>> There is no possibility of getting ambiguity problem.
>> It use 0-param constructor to create the object..





TravelAgent.java:
  1. package com.nt.beans;

  2. public class TravelAgent {
  3. private TourPlan tp;

  4. public TravelAgent() {
  5. System.out.println("TravelAgent::0-param constructor");
  6. }

  7. public void setTp(TourPlan tp) {
  8. System.out.println("TravelAgent.setTp()");
  9. this.tp = tp;
  10. }

  11. @Override
  12. public String toString() {
  13. return "TravelAgent [tp=" + tp + "]";
  14. }
  15. }


TourPlan.java:
  1. package com.nt.beans;

  2. import java.util.Arrays;

  3. public class TourPlan {
  4. private String places[];

  5. public void setPlaces(String[] places) {
  6. this.places = places;
  7. }

  8. @Override
  9. public String toString() {
  10. return "TourPlan [places=" + Arrays.toString(places) + "]";
  11. }
  12. }


applicationContext.xml:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
  5. <bean id="tp" class="com.nt.beans.TourPlan">
  6. <property name="places">
  7. <array>
  8. <value>Simla</value>
  9. <value>Goa</value>
  10. <value>Delhi</value>
  11. </array>
  12. </property>
  13. </bean>
  14. <bean id="ta" class="com.nt.beans.TravelAgent" autowire="byName"/>
  15. </beans>


AutowireByNameTest.java:
  1. package com.nt.test;

  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.AbstractApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. import com.nt.beans.TravelAgent;

  6. public class AutowireByNameTest {
  7. public static void main(String[] args) {
  8. ApplicationContext ctx=null;
  9. TravelAgent ta=null;
  10. ctx=new ClassPathXmlApplicationContext("com/nt/cfgs/applicationContext.xml");
  11. ta=ctx.getBean("ta",TravelAgent.class);
  12. System.out.println(ta);
  13. ((AbstractApplicationContext) ctx).close();
  14. }
  15. }



No comments