본문 바로가기
Spring/Spring 기초

Spring개념 한번 슥~ 흝어보기

by 미눅스[멘토] 2023. 7. 18.
728x90

디자인 패턴의 정의

 

프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 소프트 웨어 개발과정에서

발견된 Know-How를 축척하여 이름을 붙여 이후에 재사용하기 좋은 형태로 특정 규약을 묶어서

정리한 것

 

이용어를 처름 제시한 곳은 Gof(Gang of Four)라 불리는 네 명의 컴퓨터 과학 연구자들이 쓴 서적이다.


 

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

1.요구사항은 수시로 변경 -> 요구 사항 변경에 대한 Source Code변경을 최소화

2.여러 사람이 같이 하는 팀 프로젝트 진행 -> 범용적인 코딩 스타일을 적용

3. 상황에 따라 인수 인계하는 경우도 발생 -> 직관적인 코드를 사용

 


디자인 패턴과 프레임 워크의 관련성

프레임 워크의 정의

비기능적(Non-Funtional)요구 사항(성능,보안,확장성,안정성 등)을 만족하는 구조 

 

 

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

1. 비기능적인 요소들을 초기 개발 단꼐마다 수현해야 하는 불합리함을 극복해준다

2. 기능적인 (Functional)요구사항에 집중할 수 있도록 해준다.

3. 디자인 패턴과 마찬가지로 반복적으로 발견되는 문제를 해결하기 위한

특화된 Solution을 제공한다.

 


 

 

2.디자인 패턴과 프레임 워크의 관련성

 

디자인 패턴은 프에임워크의 핵심적인 특징이고, 프레임 워크를 사용하는 어플리 케리션에

그 패턴이 적용 된다는 특징을 가지고 있다. 하지만 프레임워크는 디자인 패턴이 아니다.

 

 


 

개발자는 프레임 워크의 기반코드를 확장하여 사용하면서

자연스럽게 그 프레임워크에서 사용된 패턴을 적용할 수 있게 된다.

 


3. 프레임 워크의 구성요소와 종류 (엄청 중요한 느낌임)

Ioc(inversion of Control)

IoC란 "제어의 역전" 즉, 인스턴스 생성부터 소멸까지 인스턴스 생명 주기 관리를 

개발자가 아닌 컨테이너가 대신 해준다 는 뜻.

즉, 컨테니너 역할을 해주는 프레임워크에게 제어하는 권한을 넘겨서 개발자의 코드가

신경 써야 할 것을 줄이는 전략이다.

 

 


클래스 라이브러리(Class Library)

프레임워크는 특정 부분의 기술적인 구현을 라이브러리 형태로 제공한다.

 

Class Library라는 구송 요소는 프레임워크의 정의 중 하나인 "Semi Complte(반제품)"이다.

라고 해석하게 만들었다

 

 


디자인 패턴

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

 

 

 


프레임워크 종류

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

 

기능 프레임 워크종루
웹(MVC) Spring MVC,Struts2, Webwork, PlayFramework
OR(Object-Relational) 매핑 MyBatis, Hibernate, JPA, Spring JDBC
AOP(Aspect Oriented Programming) Spring AOP, AspectJ, JBoss AOP
DI(Dependency Injection)중요(많이씀) Spring DI, Google Guice
Build와 Library관리 Ant + lvy, Maven, Gradle
단위 테스트 jUnit, TEstNG, Cactus
JavaScript jQuery, AngularJS, Node.js

 

의존성 주입

 


 

 

 

 

스프링 삼각 함수

머릿속에 계속 남게끔 반복해라