웹/Spring

[Spring]Spring Framework Basic Framework 개념 | T아카데미

Ellie67 2021. 5. 17. 21:37

-SKplanet Tacademy의 스프링 프레임워크 강의를 듣고 정리한 내용입니다-

S/W 재활용

1. copy & paste

- 사용한 코드의 변경이 생기면 코드를 사용한 클래스 모두 변경해야 한다.

 

2. method(function) 재사용

- 사용한 메서드의 signature 변경시 메서드를 사용한 클래스에 영향을 준다.(결합도 문제)

- signature: 메서드 , 리턴 타입, 아규먼트 개수타입

 

3. class(inheritance) 재사용

- 메서드를 상속받은 클래스에 맞게 자동적으로 변경된 메서드를 사용한다.

 

4. AOP(Aspect Oriented Programming)

- OOP 더욱 OOP 답게 만들어 있고, 기존의 절차적 프로그래밍에도 적용될 있다.

- 관심의 분리 (핵심관리모듈/횡단관심모듈)

 

  • 핵심관리모듈(비즈니스 로직)
  • 횡단관심모듈(기능적 기능 제공, 핵심관심모듈 서포트)

- 핵심관심모듈 + 횡단관심모듈 => 위빙

- 위빙은 프레임워크에서 해줌

- AOP 핵심관심모듈의 코드를 직접 건드리지 않고 필요한 기능이 동작하도록 하는 데는 위빙 작업이 필요하다.

 


디자인 패턴

- 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법.

- 소프트웨어 개발과정에서 발견된 Know-How 축적해서 재사용하기 좋은 형태로 특정 규약을 묶어서 정리한 .

- GoF : 23가지 디자인 패턴

 

디자인 패턴을 사용하는 이유

- 요구사항은 수시로 변경되므로 요구사항 변경에 대한 Source Code 변경을 최소화하기 위해

- 프로젝트 진행시 범용적인 코딩 스타일을 적용하기 위해

- 인수 인계하는 경우 직관적인 코드를 사용하기 위해

 


프레임워크

- 비기능적인 요구사항(성능, 보안, 확장성, 안정성 ) 만족하는 구조와 구현된 기능을 안정적으로 실행하도록 제어해주는 구조의 라이브러리 덩어리

- 애플리케이션들의 최소한의 공통점을 찾아 하부 구조를 제공함으로써 개발자들로 하여금 시스템의 하부 구조를 구현하는데 들어가는 노력을 절감하게 해준다.

 

프레임워크를 사용하는 이유

- 비기능적인 요소들을 초기 단계마다 구현해야 하는 불합리함 극복

- 기능적인 요구사항에 집중할 있도록 해준다.

- 반복적으로 발견되는 문제를 해결하는데 솔루션을 제공

 

프레임워크는 디자인 패턴을 내부적으로 사용함

개발자는 프레임워크의 기반 코드를 확장하여 사용하면서 자연스럽게 프레임워크에서 사용된 패턴을 적용할 있게 된다.”

 

프레임워크의 구성요소와 종류

1. IoC

2. class Library

3. design pattern

 

IoC(Inversion of Control) : 제어의 역전

- 인스턴스 생성부터 소멸까지의 인스턴스 생명주기 관리를 개발자가 아닌 컨테이너가 대신 해준다.

- 컨테이너 역할을 해주는 프레임워크에게 제어하는 권한을 넘겨서 개발자의 코드가 신경 써야 줄인다.

 

 

<IoC에서 프레임워크와 라이브러리의 차이점>

-일반적인 프로그램 흐름과 반대로 동작하므로 IoC라고

- Spring 컨테이너는 IoC 지원하며, 메타데이터(XML 설정) 통해 beans 관리하고 어플리케이션의 중요부분을 형성함

-Spring 컨테이너는 관리되는 bean들의 의존성주업(Dependency Injection) 통해 IoC 지원함

디자인 패턴 + 라이브러리 = 프레임워크

 

프레임워크 종류

아키텍처 결정 = 사용하는 프레임워크의 종류 + 사용전략