๐ป
์คํ๋ง ํ๋ ์์ํฌ - [Spring] DI(Depedency Injection) ๋ณธ๋ฌธ
์คํ๋ง ํ๋ ์์ํฌ - [Spring] DI(Depedency Injection)
๋ํจ๋ 2020. 7. 24. 16:25DI(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();
}
}