Spring

230130 Spring bean 실습

주영재 2023. 1. 30. 20:09

Ibattery.java

package ex04;

public interface IBattery {

	public void energy();
}

 

Battery1.java

package ex04;

public class Battery1 implements IBattery {

	@Override
	public void energy() {
		System.out.println("에너자이저");
	}

}

 

 

Battery2.java

package ex04;

public class Battery2 implements IBattery{

	@Override
	public void energy() {
		System.out.println("노랑색건전지");
	}
	
}

Airplane.java

 

package ex04;

public class Airplane {

	private IBattery battery;
	
	
	public IBattery getBattery() {
		return battery;
	}
	//세터 주입
	public void setBattery(IBattery battery) {
		this.battery = battery;
	}
	
	
}

 

Car.java

package ex04;

public class Car {

	private IBattery battery;
	//생성자 주입
	public Car(IBattery battery) {
		this.battery = battery;
	}
	
	//getter
	public IBattery getBattery() {
		return battery;
	}
	
	
}

quiz01-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="battery1" class="ex04.Battery1" />

	<!-- 세터 주입 -->
	<bean id="airplane" class="ex04.Airplane">
		<property name="battery">
			<bean id="battery2" class="ex04.Battery2" />
		</property>
	</bean>

	<!-- 생성자 주입 -->
	<bean id="car" class="ex04.Car">
		<constructor-arg ref="battery1" />
	</bean>



</beans>

 

 

MainClass.java

package ex04;

import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {

	public static void main(String[] args) {
		
		//Car, Airplane 빈을 생성하고, 의존성 주입
		//각 객체 안에 있는 배터리를 자바클래스에서 출력.

		GenericXmlApplicationContext ctx =
new GenericXmlApplicationContext("quiz01-context.xml");
		
		Airplane airplane=ctx.getBean(Airplane.class);
		Car car=ctx.getBean(Car.class);
		//Car car=(Car)ctx.getBean("car"); - 최상위 Object를 가져오므로 형변환을 해줘야 한다.
		
		airplane.getBattery().energy();
		car.getBattery().energy();
	}
}

 

 

콘솔출력문

1월 30, 2023 8:08:34 오후 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [quiz01-context.xml]
1월 30, 2023 8:08:34 오후 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.GenericXmlApplicationContext@402a079c: startup date [Mon Jan 30 20:08:34 KST 2023]; root of context hierarchy
노랑색건전지
에너자이저