#spring. annotation을 이용한 DI

gisung2215·2020년 10월 22일
0

👍 Spring 개념정리

목록 보기
3/7
post-thumbnail
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:util="http://www.springframework.org/schema/util"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">

  	<!-- 객체들이 annotation을 가지고 있음을 나타낸다. -->
	<context:annotation-config/> 

	<!--  Exam exam = new NewlecExam(); -->
	<bean id="exam" class="com.ssafy.test.NewlecExam"/>
  
	<!-- ExamConsole console = new GridExamConsole(); -->
 	<bean id="console" class="com.ssafy.test.GridExamConsole">
		<!--console.setExam(exam); -->
		<!--<property name="exam" ref="exam" />	 -->
	</bean>
</beans>
package com.ssafy.test;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class GridExamConsole implements ExamConsole {

	private Exam exam;
	
	public GridExamConsole() {
		// TODO Auto-generated constructor stub
	}

	@Override
	public void print() {
		System.out.println(" ___________________");
		System.out.println("|   total  |  avg   | ");
		System.out.println(" ___________________");
		System.out.printf("|    %3d  |   %3.2f|\n", exam.total(), exam.avg());
		System.out.println(" ___________________");
	}

	@Autowired
	@Override
	public void setExam(Exam exam) {
		this.exam = exam;
	}
}
...

public class Program {

	public static void main(String[] args) {
	
		ApplicationContext context =
			new ClassPathXmlApplicationContext("com/ssafy/test/setting.xml");
		
		ExamConsole console = context.getBean(ExamConsole.class);
		console.print();
     	}
}

✔결과화면

Q. GridExamConsole 클래스의 setExam(@Autowired)은 뭘 보고 바인딩할까?


A. 자료형에 맞춰 참조할 수 있는 객체를 바인딩해준다.

Q. 그렇다면 동일한 자료형이 2개 이상이라면?


<!--  Exam exam = new NewlecExam(); -->
	<bean id="exam" class="com.ssafy.test.NewlecExam" p:kor=10/>
	<bean id="exam" class="com.ssafy.test.NewlecExam" p:kor=20/>
	@Autowired
    @Qualifier("exam1")
	@Override
	public void setExam(Exam exam) {
		this.exam = exam;
	}

A. @Qualifier("")를 이용하여 바인딩할 객체 이름을 설정해야 한다.

0개의 댓글

관련 채용 정보