
첫번째 방법은 A객체가 B와 C객체를 New 생성자를 통해서 직접 생성하는 방법이고, (완제품)
두번째 방법은 외부에서 생성 된 객체를 setter()나 생성자를 통해 사용하는 방법입니다. (조립)
첫번째 방법 예제를 보시면 MainClass는 Cats를 의존하고 있고, MainClass에서 직접 Cats클래스를 생성해서 사용합니다.
IOC: 오브젝트의 생성, 사용 및 생명주기의 관리까지 제어권이 바뀌었다는 의미입니다. 즉, 제어권을 스프링 프레임워크가 담당한다는 의미입니다.
IOC 컨테이너: 빈객체를 관리하는 저장소입니다
interface Shape
- double getArea();
- void setWidth(double width)
- void setHeight(double height)
삼각형 , 사각형 객체를 위의 인터페이스를 구현하여,
appCTX4에 객체 생성후 Pencil 과 같이 다형성이 적용되도록 Main을 짜시오.
Shape.java
package com.javalec.ex;
public interface Shape {
public double getArea();
public void setWidth(double width);
public void setHeight(double height);
}
Triangle.java
package com.javalec.ex;
public class Triangle implements Shape {
private double width;
private double height;
@Override
public void setWidth(double width) {
this.width = width;
}
@Override
public void setHeight(double height) {
this.height = height;
}
@Override
public double getArea() {
return (width * height)/2;
}
}
Rectangle.java
package com.javalec.ex;
public class Rectangle implements Shape {
private double width;
private double height;
@Override
public void setWidth(double width) {
this.width = width;
}
@Override
public void setHeight(double height) {
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
}
appCTX4.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">
<!-- Pencil pencil = new Pencil4B(); -->
<bean id="rectangle" class="com.javalec.ex.Rectangle">
<property name="width">
<value>10</value>
</property>
<property name="height">
<value>2</value>
</property>
</bean>
<bean id="triangle" class="com.javalec.ex.Triangle">
<property name="width">
<value>10</value>
</property>
<property name="height">
<value>2</value>
</property>
</bean>
</beans>
ShapeMain.java
package com.javalec.ex;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class ShapeMain {
public static void main(String[] args) {
String config = "classpath:appCTX4.xml";
AbstractApplicationContext ctx = new GenericXmlApplicationContext(config);
Shape rec = ctx.getBean("rectangle", Shape.class);
Shape tri = ctx.getBean("triangle", Shape.class);
System.out.println("사각형: "+ rec.getArea());
System.out.println("삼각형: "+ tri.getArea());
}
}