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
노랑색건전지
에너자이저