반응형

Framework란?

어떠한 틀, 규칙이 존재하는 선배들이 쌓아놓은 수준 높은 코드 뭉치.

( 맨 땅에 해딩하지 말라는 말 )

 

가이드라인을 형식화 시킨게 패턴 -> 패턴은 반복되는 문제들을 설명하고 이것에 대한 해결방안을 마련함.

-> 이런 패턴을 자동화한게 템플릿 -> 이 템플릿들을 모아서 컴파일된 형식으로 안정적인 기능을 한게 프레임워크

 

가이드라인 << 패턴 << 템플릿 << 프레임워크

 

 개발 생산성 향상에 많은 도움이 됨. 하지만 이 틀의 규칙에 따라야함. (틀과 규칙을 배워야함)

 

 

Framwork의 Layer

 프레임워크로 기반되는 앱은 여러개의 Layer로 구성됨.

 

  • 애플리케이션 프레임워크
    • 도메인 프레임워크
      • 특정 비즈니스 도메인을 대상으로 함.  앱에 공통된 비즈니스 지식을 공유하게됨.
    • 범용 프레임워크
      • 비즈니스 지식을 포함하지 않음.
      • 비즈니시 도메인과 관계없이 대부분 앱이 공통적으로 사용할 수 있는 컴포넌트로 구성됨.
      • 범용 프레임워크는 Spring, .NET, 엔티티, 스트러츠 프레임워크
  • 파운데이션 프레임워크
    • 앱과 앱프레임워크의 프로그래밍모델을 제공해주는 프레임워크임 (시스템 프레임워크라고도 함)

 

의존성 주입

 프레임워크를 구성하는데 중요한거 하나가 의존성 주입임.

의존성이 생기면 SW 변경이 어렵고, 복잡하게 됨.

Spring 프레임워크를 포함하는 모든 대부분의 프레임워크는 IoC 컨테이너를 제공하고 있음..

SW가 문제를 해결하기위해 의존성을 제거해야함. 그래서 그것을 해결하기 위해서 객체를 외부에서 생성해줘야 함.

객체를 외부에서 생성해준다. 이 말을 의존성 주입이라 함!

 

의존성을 해결하는 방법은 두가지가 있음.

 

  1. 인터페이스 도입

-> 하지만 결국 인터페이스를 생성해야함(직접적으로)

 

 

  1. 인터페이스 생성 제거 (IoC 컨테이너를 도입하여)
public class Order {
	private CustomerService customer;
	public Order{CustomerService customer) {
		this.customer = customer;
	}
}

public class IoCContainer {
	public Order getOrder() [
		CustomerService customer = new Customer();
		return new Order(customer);
	}
}

 

 따라서,  IoC 컨테이너가 필요하게 되었고,  프레임워크를 통해 의존성을 제거할 수 있게 되어서 SW를 개발하기 편하게 되었음.

 

참고자료

https://www.youtube.com/watch?v=cpG_cjEiqFo

반응형