본문 바로가기
개발자/자바 & 스프링

스프링 XML을 통한 의존성 주입

by mansfield 2023. 2. 27.
반응형

setter 메소드를 통한 의존성 주입

- 의존성을 주입 받는 setter 메소드를 만들고 이를 통해 의존성 주입 

<?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-4.3.xsd">

	<!-- 객체 생성 -->
	<!-- 
		SamsungTV samsung = new SamsungTV();
	 -->
	<bean id="samsung" class="kr.or.tv.vo.SamsungTV"></bean> 
	
	<!-- 객체 생성하여 데이터 넣기1 (setter 사용) -->
	<!-- 
		Member m1 = new Member();
	 	m1.setName("맨스필드");
	 	m1.setAge(20);
	 	m1.setAddr("서울");
	 -->
	 <bean id="m1" class="kr.or.tv.vo.Member">
	 	<property name="name" value="맨스필드" />
	 	<property name="age" >
	 		<value type="java.lang.Integer">20</value>
	 	</property>
	 	<property name="addr" value="서울" />
	 </bean>

생성자를 통한 의존성 주입

	<!-- 객체 생성하여 데이터 넣기2 (생성자 사용) -->
	<!-- 
		Member m2 = new Member("맨스필드2", 22, "창원")
	-->
	<bean id="m2" class="kr.or.tv.vo.Member">
		<constructor-arg value="맨스필드2" />
		<constructor-arg>
			<value type="java.lang.Integer">22</value>
		</constructor-arg>
		<constructor-arg value="창원" />
	</bean>

메소드를 통한 의존성 주입

MemberMgr

@Data
@AllArgsConstructor
@NoArgsConstructor
public class MemberMgr {
	private Member m;
}

xml - 위에서 생성한 m1을 mm에 넣음

	<!-- 객체 생성하여 데이터 넣기(메소드 이용) -->
	<!-- 
		MemberMgr mm = new MemberMgr();
		mm.setM(m1)
	 -->
	 
	 <bean id="mm" class="kr.or.tv.vo.MemberMgr">
	 	<property name="m" ref="m1"></property>
	 </bean>

 

서블릿

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//spring 설정 파일을 읽어오는 객체 생성 
		AbstractApplicationContext cntx = new GenericXmlApplicationContext("sample.xml");
		
		//sample.xml 에서 생성한 객체를 읽어옴 (<bean id="samsung">)
		//SamsungTV sTv = (SamsungTV)cntx.getBean("samsung");
		//sTv.powerOn();
		
		Member m1 = (Member)cntx.getBean("m1");
		Member m2 = (Member)cntx.getBean("m2");
		System.out.println(m1.getAddr());
		System.out.println(m2.getAddr());
		
		
	}

 

 

300x250

댓글