g. Bean Definition Inheritance - kimxavi/spring_tutorial GitHub Wiki

μžμ‹ bean의 μ •μ˜λŠ” λΆ€λͺ¨μ˜ μ •μ˜λ‘œ λΆ€ν„° μ„€μ • 데이터λ₯Ό 상속할 수 μžˆλ‹€. μžμ‹μ˜ μ •μ˜λŠ” override 될 수 μžˆλ‹€. bean의 상속은 μžλ°” ν΄λž˜μŠ€μ— 아무 것도 μ•ˆν•΄λ„ λœλ‹€. ν•˜μ§€λ§Œ, 상속 컨셉은 λ˜‘κ°™λ‹€. XML 기반 λ°μ΄ν„°μ—μ„œλŠ” parent μ–΄νŠœλ¦¬λ·°νŠΈλ‘œ λΆ€λͺ¨μ˜ bean을 λͺ…μ‹œν•΄μ„œ μ„€μ •ν•˜λ©΄ λœλ‹€.

Beans.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-3.0.xsd">

   <bean id="helloWorld" class="com.tutorialspoint.HelloWorld">
      <property name="message1" value="Hello World!"/>
      <property name="message2" value="Hello Second World!"/>
   </bean>

   <bean id="helloIndia" class="com.tutorialspoint.HelloIndia" parent="helloWorld">
      <property name="message1" value="Hello India!"/>
      <property name="message3" value="Namaste India!"/>
   </bean>

</beans>

HelloWorld.java

package com.tutorialspoint;

public class HelloWorld {
   private String message1;
   private String message2;

   public void setMessage1(String message){
      this.message1  = message;
   }

   public void setMessage2(String message){
      this.message2  = message;
   }

   public void getMessage1(){
      System.out.println("World Message1 : " + message1);
   }

   public void getMessage2(){
      System.out.println("World Message2 : " + message2);
   }
}

HelloIndia.java

package com.tutorialspoint;

public class HelloIndia {
   private String message1;
   private String message2;
   private String message3;

   public void setMessage1(String message){
      this.message1  = message;
   }

   public void setMessage2(String message){
      this.message2  = message;
   }

   public void setMessage3(String message){
      this.message3  = message;
   }

   public void getMessage1(){
      System.out.println("India Message1 : " + message1);
   }

   public void getMessage2(){
      System.out.println("India Message2 : " + message2);
   }

   public void getMessage3(){
      System.out.println("India Message3 : " + message3);
   }
}

MainApp.java

package com.tutorialspoint;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
   public static void main(String[] args) {
      ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");

      HelloWorld objA = (HelloWorld) context.getBean("helloWorld");

      objA.getMessage1();
      objA.getMessage2();

      HelloIndia objB = (HelloIndia) context.getBean("helloIndia");
      objB.getMessage1();
      objB.getMessage2();
      objB.getMessage3();
   }
}

PRINT

World Message1 : Hello World!
World Message2 : Hello Second World!
India Message1 : Hello India!
India Message2 : Hello Second World!
India Message3 : Namaste India!
  • helloIndia bean에 message2λ₯Ό μ •μ˜ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ 상속에 μ˜ν•΄ μ „λ‹¬λ°›μ•˜λ‹€. helloIndia의 message1은 override λ˜μ—ˆλ‹€.

Bean Definition Template

큰 λ…Έλ ₯ 없이 λ‹€λ₯Έ μžμ‹ bean μ •μ˜μ—μ„œ μ‚¬μš©λ˜λŠ” bean μ •μ˜ ν…œν”Œλ¦Ώμ„ λ§Œλ“€ 수 μžˆλ‹€. bean ν…œν”Œλ¦Ώμ—μ„œ classλ₯Ό λͺ…μ‹œν•˜μ§€ μ•Šμ•„λ„ λœλ‹€. 그리고 abstract 값을 true둜 μ€˜μ•Όν•œλ‹€.

<?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-3.0.xsd">

   <bean id="beanTeamplate" abstract="true">
      <property name="message1" value="Hello World!"/>
      <property name="message2" value="Hello Second World!"/>
      <property name="message3" value="Namaste India!"/>
   </bean>

   <bean id="helloIndia" class="com.tutorialspoint.HelloIndia" parent="beanTeamplate">
      <property name="message1" value="Hello India!"/>
      <property name="message3" value="Namaste India!"/>
   </bean>

</beans>

λΆ€λͺ¨ bean은 λΆˆμ™„μ „ν•˜κ³ , λͺ…μ‹œμ μœΌλ‘œ abstractλ₯Ό μ„€μ •ν–ˆκΈ° λ•Œλ¬Έμ— μΈμŠ€ν„΄μŠ€ν™” ν•˜μ§€ μ•ŠλŠ”λ‹€. μ΄λ ‡κ²Œ abstractκ°€ μ •μ˜ λ˜μ—ˆμ„ λ•Œ, 순수 ν…œν”Œλ¦Ώ μ •μ˜λ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.

⚠️ **GitHub.com Fallback** ⚠️