프레임워크 개념
1.sw 재사용성
2.디자인패턴 프레임워크란? 둘의 관련성
3.프레임워크 구성요소 종류
재사용 방법
copy & paste
가장 기본적인 방법이다.
ex)날짜 형태 지정 java
a클래스에 있는 코드를 b클래스에서 사용하기위해 복사 붙여넣기한다.
문제점- jdk가 바뀐다면? 코드가 있는 모든 클래스에 영향이가게된다.
method function(메소드호출)
a클래스에있던 코드를 메소드를 생성하여 집어넣는다.
클래스이름.메소드로 사용가능하다.
(호출하는쪽에는 영향이안감)
문제점 - MethodSignature(메소드명, 리턴타입, 아큐먼트 갯수,타입등)
복사 붙여넣기보단 진보된 방식이지만 작업영역간 결합도 문제 존재한다.
Class
메소드를 클래스 내부에 구현해서 만들어놓은것이다.
메소드를 구성해놓은 클래스를 상속한다.
자식 클래스에서 사용한다.
메서드방식보단 개선된 방식이다.
문제점 - signature 문제는 그대로있다.
AoP(관심의 분리)
- OOP를 supprt해주는 개념
- C에서도 사용가능
*관심사 분리
주제:은행
횡단관심모듈(기능적 로직)
ex)보안,로깅
핵심관심모듈(비지니스로직)
ex)계좌이체,입출금,이자계산
위빙 : 핵심관심모듈에서 횡단관심모듈을 직접 호출하지 않음(프레임워크에서 해줌)
AoP란?(간단설명)
간단하게말해, 계좌이체를 하게될때 로그를 남기게되는데
코드상에서 직접호출하지 않고 프레임워크에서 처리해준다.
디자인패턴과 프레임워크의 관련성
디자인패턴의 정의
프로그램개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나이다.
개발과정에 발견된 Know_how를 축적하여 이름붙인다.
재사용하기 쉽게 특정 규약을 묶어서 정리한것.
대표적인 디자인패턴(GOF)에서 23가지 지원한다.
디자인패턴 사용하는 이유
- 요구사항 변경에따른 소스코드변경 최소화
- 팀 프로젝트시 범용적인 코딩 스타일적용
- 인수인계시 직관적인 코드 사용
프레임워크의 정의
- 비기능적(Non-Funtional) 요구사항(성능,보안,로깅,확장성,안정성등)을 만족하는 구조와
구현된 기능을 안정적으로 실행하도록 제어해주는 잘만들어진 구조의 라이브러리 덩어리
또 애플리케이션들의 최소한의 공통점을 찾아 하부 구조를 제공함.
- 개발자들이 시스템 하부구조 구현하는데 들어갈 노력을 절감해준다.
프레임워크를 사용하는이유
- 비기능적인 요소(보안,로깅) 초기개발단계마다 구현해야하는 불합리함 극복할수있다.
- 기능적인 요구에만 집중(비지니스로직)하면된다.
- 반복적으로 발견되는 문제를 해결하기위한 특화된 Solution이다.
디자인패턴과 프레임워크의 관련성
- 디자인패턴은 프레임워크의 핵심적인 특징(프레임워크내부에 디자인패턴 적용해서 사용)이 있다.
- 프레임워크를 디자인패턴이라고는 하지못함. 디자인패턴을 사용하고있는 것이다.
- 프레임워크는 디자인 패턴과함께 패턴이 적용된 라이브러리를 제공한다.
프레임워크가 내부적으로 디자인패턴사용한다.
프레임워크를 사용하면 녹아들어가있는 디자인패턴을 사용하게된다.
프레임워크의 구성요소와 종류
Ioc(제어의 역전)
ClassLibrary
Design Patterm
IOC(제어의 역전)
- 인스턴스 생성 부터 소멸이 컨테이너가 처리(개발자가 안함)한다.
- 프레임워크한테 권한을 넘김으로써 개발자 코드가 신경쓸 부분을 줄여준다.
차이점
프레임워크(IOC적용) 사용할때 |
라이브러리 사용할때 |
프레임워크가 개발자가 작성한 코드를 호출 |
개발자가 라이브러리 호출(스트링유틸사용시) |
주도권이 프레임워크가 가지고있음(제어의 역전)
Spring 컨테이너가 IOC지원함.
-메타데이터(XML설정)를 통해 beans를 관리하고 어플리케이션의 중요부분을 형상한다.
bean들을 의존성 주입을 통해IoC지원한다.
ClassLibrary
특정 부분의 기술적인 구현을 라이브러리 형태로 제공(반제품) 기본적인 뒷단을 구성되어있다.
프레임워크코드가 유저코드를 호출(이게 제어역전)한다.
디자인패턴
디자인 패턴 + 라이브러리 = 프레임워크
프레임워크 사용시 라이브러리의 디자인패턴을 보면 구성을 이해하기쉽다.
커스터마이징할때도 디자인패턴의 이해가 필요하다.
'개발 소발 > 개발 Spring' 카테고리의 다른 글
AOP란? AOP 기초개념 (0) | 2020.07.09 |
---|---|
Spring IoC(Inversion of Control),Bean,의존성주입이란? (0) | 2020.07.08 |
SpringMVC란? (0) | 2018.01.11 |
MVC패턴이란? (0) | 2018.01.11 |
Mybatis Mapper 인터페이스란? (0) | 2018.01.11 |