๐Ÿ’ป

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ - [Spring] DI(Depedency Injection) ๋ณธ๋ฌธ

KITRI/SPRING

์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ - [Spring] DI(Depedency Injection)

๋˜ํšจ๋‹ˆ 2020. 7. 24. 16:25

DI(Depedency Injection)

 

class์™€ class๊ฐ„์˜ ์˜์กด์„ฑ๊ณผ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’๋‹ค.

์˜์กด์„ฑ, ๊ฒฐํ•ฉ๋„, ์ค‘๋ณต์„ฑ์ด ๋‚ฎ์„์ˆ˜๋ก ์ข‹์€ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค

โ€‹

๊ฐ์ฒด์„ ์–ธ์„ XML๋กœ ํ•ด์คŒ์œผ๋กœ์จ ์˜์กด์„ฑ์„ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ „์†ก์€ setter์™€ ์ƒ์„ฑ์ž๋กœ ์ง„ํ–‰๋œ๋‹ค.

 


โ€‹

โ€‹

[Spring xmlํŒŒ์ผ์ƒ์„ฑ]

[appCTX.xml]

<?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"> <!-- ๊ฐ์ฒด ์ƒ์„ฑ ์—ญํ•  --> <!-- ๊ฐ์ฒด๋ฐœ์ƒ, ์—ฌ๋Ÿฌ๊ฐœ๋„ ํ•  ์ˆ˜ ์žˆ์Œ --> <bean id="su" class="com.java.di01.Su"/> <bean id="example" class="com.java.di02.Example"/> <bean id="testing" class="com.java.di02.Testing"/> </beans>

 

Su.java

package com.java.di01;

public class Su {
	public void disp() {
		System.out.println("Su Class disp Function");
	}
}

 

MainClass.java

package com.java.di01;

import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {
	public static void main(String[] args) {
		/*
		 * ํด๋ž˜์Šค๊ฐ„์˜ ๊ฒฐํ•ฉ์ด ๊ฐ•ํ•ด์ง€๊ณ  ์˜์กด์„ฑ์ด ๋†’์•„์ง€๋ฉด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผํ•˜๋Š” ๋ฒ”์œ„๊ฐ€ ๋„“์–ด์ง„๋‹ค.
		 * ํด๋ž˜์Šค๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ์•ฝํ•˜๊ฒŒ ํ•˜๊ณ  ์˜์กด์„ฑ์„ ๋‚ฎ๊ฒŒ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค.
		 * ์ด๋Ÿฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์˜ ์„ค๊ณ„ ํŒจํ„ด์„ ๋ฐฉ์‹์ด DI(Dependency Injection)๋ผ๊ณ  ํ•œ๋‹ค.
		 * DI๋Š” ์˜์กด๊ฐ์ฒด๋ฅผ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์•„์„œ ๊ตฌํ˜„ํ•œ๋‹ค.
		 */
		
		GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("appCTX.xml");
		Su su = (Su)ctx.getBean("su");
		su.disp();
		ctx.close();
	}
}

 


Example.java

package com.java.di02;

public class Example {
	public void disp() {
		System.out.println("Example Class disp Function");
	}
}

 

Testing.java

package com.java.di02;

public class Testing {
	public void print() {
		System.out.println("Testing Class print Function");
	}
}

โ€‹

MainClass.java

package com.java.di02;

import org.springframework.context.support.GenericXmlApplicationContext;

import com.java.di01.Su;

public class MainClass {

	public static void main(String[] args) {
		GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("appCTX.xml");
		
		Example ex = (Example) ctx.getBean("example");
		ex.disp();
		
		Testing test = (Testing) ctx.getBean("testing");
		test.print();
		
		Su su = (Su) ctx.getBean("su");
		su.disp();
		
		ctx.close();	
	}
}
๋ฐ˜์‘ํ˜•
Comments