KOSTA : 클라우드 네이티브 애플리케이션 개발 전문가 양성과정

06/13 42일차 Spring / DI방식/ DI가 왜 필요함?

람대리 2024. 6. 13. 09:55
728x90
public class Remocon{
	Remocon(){}
    int volume = 3;
    void chmove(LG s){
    	Samsung s = new Sumsung();
        Lg s = new Lg();
        s.move();
    }
}

public interface TV{
	abstract void chmove(TV o);
}

public class Samsung implements TV{
	@Override
    void chmove(TV o){}
}


main(String[] args){
	Remocon r = new Remocon();
    r.chmove(new Samsung());
    // <bean name="sss" class="com.kosa.Remocon">
    
    // servet-context.xml
    // new samsung() == <bean name="ddd" class="com.kosa.Samsung"/> 이걸 어떻게 넣을꺼냐 이게 DI이다
    //r.chmove(new Lg());
}

 

- 다형성을 이용하라

- 파라미터로 부모계층을 올리자

 

-- 새로 배울 내용

setter(프로퍼티), constructor(생성자)

private TV obj;

public void setObjc(TV tt){

  this.obj = tt;

}

xml에서 어떻게 자바로 넣어줄꺼냐??

public void setInstance()

 

private String name;

public void setName(String name){

 this.name = name;

}

new 된 객체를 파라미터에 넣어줘라 이게 DI이다 마

 

 

# DI 프로퍼티 방식

 

#DI 생성자 방식

 

#DI 관련 주요 클래스

Spring container : 객체를 관리하는 컨테이너

bean을 new로 만드는 클래스

 

#면접 질문 : DI 왜 써요??

- 모든 프로그램을 개발하는 데 있어서 두가지를 봅니다. 결합도, 응집도

- 응집도란 얼마나 유관 기관을 뭉쳐있나...findUserId, findUserpw,UserCart(x) 응집도 높을수록 좋다

- 결합도란 누구껄 가져와 합치는 것을 말한다. 쟤꺼가 꼭 있어야 돼 결합도는 낮을수록 좋다. 

- DI를 사용함으로써 결합도를 낮출 수 있다.

- Container에게 결합을 위임시킴으로써 직접 결합하지않으므로 결합도를 낮출 수 있습니다.

- Spring container가 인스턴스를 생성하여 결합

- 해당하는 다형성원리로 인터페이스에만 의존하게 된다.

- 느슨한 결합