최대 1 분 소요

Spring

⭐Xml->Annotation

image
(출처:https://www.youtube.com/watch?v=S065KRjXRSY&list=PLq8wAnVUcTFUHYMzoV2RoFoY2HDTKru3T&index=12&t=90s)

XML을 이용한다면 B2를 B3로 바꾸고 싶을때 설정파일 코드를 수정해야 한다.

소스코드를 바꾸지 않고 설정파일만 수정할 수 있다는 점이 예전에는 좋았지만, 설정파일을 수정하는것에 불편함을 느끼게 되었다.

소스코드에 설정을 심는 어노테이션을 활용하기 시작했다.

⭐@Autowired을 이용한 DI

image
(출처:https://www.youtube.com/watch?v=S065KRjXRSY&list=PLq8wAnVUcTFUHYMzoV2RoFoY2HDTKru3T&index=12&t=90s)

<property>대신 console에 가면 있는 setter나, setter가 이용하는 속성에 @Autowired 키워드를 사용할 수 있다.

<?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/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
	
	<context:annotation-config/>

	<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="10" />
	
	<bean id="console" class="spring.di.ui.InlineExamConsole">
		<!-- <property name="exam"  ref="exam"/> --> 
	</bean>
</beans>

namespace에서 context를 추가하였다.(xmlns:context="http://www.springframework.org/schema/context")

<context:annotation-config/>태그를 추가하여서 객체들이 annotation을 갖고 있다는 것을 알려주어야 한다

public class InlineExamConsole implements ExamConsole {
	
	...

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

setExam이라는 setter위에 @Autowired를 추가하면 spring이 DI해줌

📌
<property>를 사용했을때는 ref속성을 통해 어떠한 객체를 di해야하는지 알려주었지만, Autowired는 무엇을 근거로 exam객체를 di해줄까?
exam객체가 2개 있으면 어떤 객체를 di 해주는가?
위 두 물음에 대한 답은 Autowired의 동작방식을 이해해야 한다(다음장)

카테고리:

업데이트:

댓글남기기