Spring 학습: IOC 의 결합 감소 원인

IOC 가 뭐 예요?
  • 반전 을 제어 하고 대상 생 성 을 Spring
  • 에 게 맡 깁 니 다.
  • IOC 용기: 대상 공장
  • 목적: 결합 도 를 최대한 낮 추고 구체 적 인 클래스 가 바 뀌 었 을 때 코드 를 수정 하 는 것 이 아니 라 설정 파일 만 수정 해 야 합 니 다.
  • 관건 적 인 원리 실현: XML 파일 (어떻게 해석 하 는 지 는 잠시 상관 하지 않 음), 공장 모델, 반사 체제
  • 공장 모드
  • 대상 을 만 드 는 과정 을 다른 유형의 getXXX 방법 으로 완성 합 니 다. 간단 한 예
  • class UserService{
    	execute(){
    		UserDao ud = UserFactory.getDao();
    		ud.add();
    	}
    }
    class UserDao{
    	private static int siz;
    	add(){
    		siz++;
    	}
    }
    class UserFactory{
    	public static UserDao getDao(){
    		return new UserDao();
    	} 
    }
    
  • 뭐 가 좋 을까요?
  • 가방 경로 와 같은 것 이 바 뀌 었 을 때 UserDao 에서 이 를 위해 코드 를 수정 할 필요 가 없다

  • XML 파일: 결합 추가 감소
  • 반사 메커니즘 에서 클래스 의 로드 는 해당 대상 의 클래스 이름과 패키지 경 로 를 알 면 클래스 대상 의 생 성 을 완성 할 수 있다. 생 성 과정 은 UserService 정 보 를 얻 은 다음 에 해당 하 는 Class.forName(String Package.Class) 대상 을 이용 하여 구조 기 를 얻 는 것 이다. 그 다음 에 Class 인 스 턴 스 를 얻 는 과정 은 중복 가능 한 과정 이다.유일한 변 수 는 대응 클래스 의 경로 와 클래스 이름 입 니 다.
  • 공장 모델 은 서비스 류 와 도구 류 의 결합 을 해 제 했 지만 도구 류 가 변경 되면 공장 류 는 코드 를 수정 해 야 한다. 특히 재 활용 성 때문에 도구 류 는 여러 공장 류 에 있 을 수 있다. 그러면 도구 류 가 바 뀌 었 을 때 공장 류 는 아직도 대면 적 으로 바 뀔 수 있다.
  • 그래서 사람들 은 이 두 가지 직접적인 의존 관 계 를 최대한 해결 하려 고 하기 때문에 Class 프로필 이 생 겼 다.
  • 사람들 은 도구 류 의 정 보 를 XML 프로필 에 기록 한 다음 XML 분석 을 통 해 프로필 에 포 함 된 정 보 를 얻 고 모든 공장 류 가 XML 파일 에서 해당 하 는 도구 류 의 정 보 를 직접 찾 을 수 있 도록 합 니 다. 그러면 도구 류 가 변동 이 있 을 때 우 리 는 XML 파일 만 수정 하면 결합 도
  • 를 크게 낮 출 수 있 습 니 다.
    IOC 는 무엇 을 이용 하여 이 세 사람의 결합 을 실현 합 니까?
    인터페이스:
  • newInstance() 기본 클래스 (자주 사용 되 지 않 음): 설정 파일 을 불 러 올 때 대상 을 만 들 지 않 고 시간 이 걸 리 지만 메모리 절약
  • XML 인터페이스: 프로필 을 불 러 올 때 대상 을 직접 만 들 고 서버 가 시 작 될 때 필요 한 대상 을 모두 만 들 수 있 습 니 다.

  • 참고 자료
  • 상 학당 스프링 5 프레임 2020 최신 판
  • 좋은 웹페이지 즐겨찾기