What is the FrameWork?
0. Intro
1) 엔터프라이즈 애플리케이션 개발의 복잡함
- 복잡한 현대 사회 문제를 해결하려 하는데서 오는 비즈니스 로직의 복잡함
- 수 많은 사용자와 데이터를 대응하기 위한 기술적인 제약조건과 요구사항
2) 복잡함을 다루기 위한 해결책 (스프링)
1. SW 재사용 방안
1) Copy & Paste
2) 메서드 호출
- 자주사용되고, 유사한 기능을 모아 메서드로 정의하여 재사용함.
3) 클래스 재사용 (상속)
4) AOP (Aspect Oriented Programming)
- 관심사의 분리 (Sesperation Of Concerns)
2. 디자인 패턴
- 프로그램 개발에서 자주 나타나는 이슈를 해결하기 위한 방법
- 개발과정에서 발견된 Know-How를 축적하여 이름을 붙여 재사용하기 위한 좋은
형태로 패턴, 규약을 묶어서 정리한 것.
- Design Patterns : Elements of Reusable Object - Oriented Software
1) 사용하는 이유
- 요구사항은 수시로 변경 -> 소스코드 변경을 최소화
- 팀 프로젝트진행 -> 범용적인 코딩 스타일 적용
- 인수인계하는 경우 -> 직관적인 코드 사용
3. 프레임워크
- 비기능적 요구사항 (성능,보안,확장성,안정성 등)을 만족하는 구조와 구현된
을 안정적으로 실행하도록 제어해주는 잘 말들어진 구조의 라이브러리 덩어리
- 애플리케이션들의 최소한의 공통점을 찾아 하부 구조를 제공함으로써 개발자들로
하여금 시스템의 하부 구조를 구현하는데 들어가는 노력을 절감.
- 개발자는 프레임워크의 기반 코드를 확장하여 사용하면서 자연스럽게 그
프레임워크에서 사용된 패턴을 적용할수 있게 됨.
- 프레임워크는 디자인 패턴과 그것이 적용된 기반 라이브러리의 결합으로 이해할 수
있음.
1) 사용하는 이유
- 비기능적인 요소들 초기 개발 단계마다 구현해야 하는 것을 극복해줌
- 기능적인(Funcotional) 요구사항에 집중할 수 있도록 해줌
- 반복적으로 발견되는 이슈를 해결하기 위한 solution 제공함.
4. 프레임워크의 구성요소
1) IoC (Inversion of Control)
- 제어의 역전
- 인스턴스 생성부터 소멸까지의 생명주기 관리를 개발자가 아닌 컨테이너
(Spring IoC Container)가 대신 해준다는 의미임.
- 컨테이너 역할을 해주는 프레임워크에게 제어(Control)하는 권한을 넘겨서
개발자의코드가 신경써야 할 것을 줄이는 전략임.
- 일반적인 프로그램 흐름과 반대로 동작하므로 IoC라고 함.
- Spring Container 는 IoC를 지원함.
- 메타데이터(XML,annotation 설정)를 통해 beans 관리 (애플리케이션의 중요부분)
- Spring Container는 관리되는 bean들을 의존정 주입 (Dependenecy Injection)을
통해 IoC를 지원함.
2) 클래스 라이브러리 (Class Library)
- 특정 부분의 기술적인 구현을 라이브러리 형태로 제공
cf. |
특징 |
프레임워크 |
라이브러리 |
.. |
유저코드 작성 |
프레임워크 클래스를 서브클래싱해서 작성 제공 |
독립적으로 작성 |
.. |
호출 흐름 |
프레임워크코드가 유저코드를 호출 |
유저코드가 라이브러리를 호출 |
.. |
실행 흐름 |
프레임워크가제어 |
유저코드가 제어 |
.. |
객체의 연동 |
프레임워크가 정의 |
독자적으로 정의 |
댓글남기기