✔ MainClass.java
package com.javalec.ex; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; public class MainClass { public static void main(String[] args) { /* * MyCalculator myCalculator = new MyCalculator(); * myCalculator.setCalculator(new Calculator()); * * myCalculator.setFirstNum(10); myCalculator.setSecondNum(2); * * myCalculator.add(); myCalculator.sub(); myCalculator.mul(); * myCalculator.div(); */ String configLocation = "classpath:applicationCTX.xml"; AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation); // ioc 컨테이너 생성 MyCalculator myCalculator = ctx.getBean("myCalculator", MyCalculator.class); // myCalculator 객체의 원본이 MyCalculator.class라는 것을 알려주는 것 myCalculator.add(); myCalculator.sub(); myCalculator.mul(); myCalculator.div(); } }
- ✔ Calculator.java
package com.javalec.ex; public class Calculator { public void addition(int f, int s) { System.out.println("addition()"); int result = f + s; System.out.println(f + " + " + s + " = " + result); } public void subtraction(int f, int s) { System.out.println("subtraction()"); int result = f - s; System.out.println(f + " - " + s + " = " + result); } public void multiplication(int f, int s) { System.out.println("multiplication()"); int result = f * s; System.out.println(f + " * " + s + " = " + result); } public void division(int f, int s) { System.out.println("division()"); int result = f / s; System.out.println(f + " / " + s + " = " + result); } }
✔ MyCalculator.java
package com.javalec.ex; public class MyCalculator { Calculator calculator; private int firstNum; private int secondNum; public MyCalculator() { } public void add() { calculator.addition(firstNum, secondNum); } public void sub() { calculator.subtraction(firstNum, secondNum); } public void mul() { calculator.multiplication(firstNum, secondNum); } public void div() { calculator.division(firstNum, secondNum); } public void setCalculator(Calculator calculator) { this.calculator = calculator; } public void setFirstNum(int firstNum) { this.firstNum = firstNum; } public void setSecondNum(int secondNum) { this.secondNum = secondNum; } }
✔ applicationCTX.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: 객체에 getter, setter를 가지고 있는 것 --> <bean id="calculator" class="com.javalec.ex.Calculator" /> <!-- 객체 생성의 과정 MyCalculator calculator = new com.javalec.ex.Calculatr; / calculator.java 를 의미 --> <bean id="myCalculator" class="com.javalec.ex.MyCalculator"> <property name="calculator"> <!-- myCalculator.setCalculator(calculator); --> <ref bean="calculator"/> </property> <property name="firstNum" value="10" /> <!-- myCalculator.setFirtsNum(10) 호출 --> <property name="secondNum" value="2"></property> </bean> </beans>
- 결과
✔ Pencil.java
package com.javalec.ex; public interface Pencil { public void use(); }
✔ Pencil4B.java
package com.javalec.ex; public class Pencil4B implements Pencil { @Override public void use() { System.out.println("4B Pencil."); } }
✔ Pencil6B.java
package com.javalec.ex; public class Pencil6B implements Pencil { @Override public void use() { System.out.println("6B Pencil."); } }
✔ applicationCTX2.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="pencil" class="com.javalec.ex.Pencil4B"></bean> --> <bean id="pencil" class="com.javalec.ex.Pencil6B"></bean> </beans>
✔ MainClass.java
package com.javalec.ex; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.GenericXmlApplicationContext; public class MainClass { public static void main(String[] args) { String configLocation = "classpath:applicationCTX2.xml"; AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation); Pencil pencil = ctx.getBean("pencil", Pencil.class); pencil.use(); } }
- 결과
💡
<bean id="pencil" class="com.javalec.ex.Pencil4B">
일 때
💡
<bean id="pencil" class="com.javalec.ex.Pencil6B">
일 때
1) 메이븐 - pom.xml
<dependency>
로 의존성 관리 (https://mvnrepository.com/)2) 스프링부트 기준 application.properties