Spring #09 값 형식 DI

underlier12·2020년 2월 10일
0

SPRING

목록 보기
9/25

09. 값 형식 DI

Setter를 통한 DI

이번에는 setter를 통해 변수에 값을 가지도록 해본다. 일반적인 방법은 다음과 같이 property 태그 내에 name, value를 입력함으로 가능하다. 혹은 중첩태그로도 가능하다.

NewlecExam.java

먼저 클래스에서 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;
	}

}

setting.xml

이후 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>

Program.java

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

실행 시 결과가 잘 나오는 것을 알 수 있다.

profile
logos and alogos

0개의 댓글