728x90
목차
1. 의존성 주입(Dependency Injection)
■ 의존성 주입이란?
- 의존성 주입은 객체가 의존하는 또 다른 객체를 외부에서 선언하고 이를 주입하는 것을 의미
- 의존 관계는 사용할 객체에 대한 레퍼런스를 외부에서 제공함으로써 만들어짐
■ 장점
- 재사용성이 높은 코드임
- 가독성이 높아짐
- 확장성을 가짐
2. 예시
■ Test_A
package j12_배열.di;
public class Test_A {
// setter를 통해 바뀌면 안될때는 final을 넣어서 상수로 만듬
private Test_B tb;
// 생성자를 매개변수로 주는 방법
// RequiredArgsConstructor
public Test_A(Test_B tb) {
this.tb = tb; // 의존성이 높음, 결합도가 높다
}
// Set을 이용해서 주는 방법
public void setTb(Test_B tb) {
this.tb = tb;
}
public void testA1() {
System.out.println("테스트A1 메소드 호출!!");
tb.testB1();
}
public void testA2() {
System.out.println("테스트A2 메소드 호출!!");
tb.testB1();
}
}
■ Test_B
package j12_배열.di;
public class Test_B {
private Test_C tc;
public Test_B(Test_C tc) {
this.tc = tc;
}
public void testB1() {
System.out.println("\t테스트B1 메소드 호출");
Test_C tc = new Test_C();
tc.testC1();
}
}
■ Test_C
package j12_배열.di;
public class Test_C {
public void testC1() {
System.out.println("\t테스트C1 메소드 호출");
}
}
■ Main
package j12_배열.di;
public class Main {
public static void main(String[] args) {
Test_C tc = new Test_C();
Test_C tc2 = new Test_C();
Test_B tb = new Test_B(tc2);
// Dependency injection
// 객체 주입은 외부에서 일어나야 함
Test_A ta = new Test_A(tb);
// 기존 것에서 다른 부품으로 갈아 끼울 때
ta.setTb(tb);
ta.testA1();
ta.testA2();
}
}