이번에는 setter를 통해 변수에 값을 가지도록 해본다. 일반적인 방법은 다음과 같이 property
태그 내에 name, value를 입력함으로 가능하다. 혹은 중첩태그로도 가능하다.
먼저 클래스에서 getter, setter를 추가한다.
package spring.di.entity;
public class NewlecExam implements Exam {
private int kor;
private int eng;
private int math;
private int com;
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getCom() {
return com;
}
public void setCom(int com) {
this.com = com;
}
@Override
public int total() {
// TODO Auto-generated method stub
return kor+eng+math+com;
}
@Override
public float avg() {
// TODO Auto-generated method stub
return total()/4.0f;
}
}
이후 xml에 property를 입력한다.
<?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">
<!-- Exam exam = new NewlecExam(); -->
<bean id="exam" class="spring.di.entity.NewlecExam">
<property name="kor" value="10"/>
<property name="eng" value="10"/>
<property name="math" value="10"/>
<property name="com" value="10"/>
</bean>
<!-- ExamConsole console = new GridExamConsole(); -->
<bean id="console" class="spring.di.ui.InlineExamConsole">
<!-- console.setExam(exam); -->
<property name="exam" ref="exam"></property>
</bean>
</beans>
package spring.di;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import spring.di.ui.ExamConsole;
public class Program {
public static void main(String[] args) {
/* 스프링에 지시하는 방법으로 변경
Exam exam = new NewlecExam();
ExamConsole console = new GridExamConsole();
console.setExam(exam);
*/
ApplicationContext context =
new ClassPathXmlApplicationContext("spring/di/setting.xml");
ExamConsole console = (ExamConsole) context.getBean("console");
// ExamConsole console = context.getBean(ExamConsole.class);
console.print();
}
}
total is 40, avg is 10.000000
실행 시 결과가 잘 나오는 것을 알 수 있다.