Summary note

Posted by hskim on September 20, 2019 · 3 mins read

Framework 구성요소

Ioc, Class Library, Design pattern


  • 디자인 패턴은 가이드라인, 프레임워크는 디자인패턴을 이용하여 만든 재사용 가능한 라이브러리로서 어플리케이션의 최소한의 공통점을 찾아 비기능적 요구사항을 만족하는 구조를 제공하기 때문에 개발자들은 이를 활용하여 기능적 요구사항에 더 집중할 수 있음

  • Inversion of Control - 제어의 역전

  • 개발자가 라이브러리를 사용하면 유저 코드가 라이브러리 코드를 호출하여 개발자가 제어함 개발자가 프레임워크 사용 시 프레임워크 코드가 유저코드를 호출하며 인스턴스 생성주기를 관리 함 제어가 역전 됨

Framework 종류
Function Framework
web(mvc) Spring MVC
Object-Relational mapping MyBatis, Spring JDBC
AOP(Aspect Oriented Programming) Spring AOP, AspectJ
DI(Dependency Injection) Spring DI
Build & Library management Maven, Gradle
Unit test jUnit
JavaScript jQuery, AngularJS, Node.js
Spring framework 특징

컨테이너 역할

  • java 객체의 lifecycle 관리
  • spring container 로부터 필요한 객체 가져와 사용 가능

DI 지원

  • 설정 파일이나 annotation을 통해 객체 간 의존관계 설정 가능

AOP 지원 트랜잭션, 로깅, 보안과 같은 모듈을 핵심 모듈에서 분리해서 적용

POJO 지원

  • Spring container에 저장되는 java 객체는 특정 인터페이스를 구현하거나, 특정 클래스를 상속받지 않아도 됨

다양한 API 지원

  • MyBatis 등 데이터베이스 처리를 위한 ORM 프레임워크들과 연동 지원
Maven
  • 라이브러리 관리 + 빌드 툴
  • 빌드 : compile, jar 파일 생성하고, 배포
  • maven과 같은 라이브러리 관리 툴이 없으면 직접 받아서 압축 해제 후 해당 프로젝트에 복사하고(배치) 해야 하지만 maven 과 같은 빌드 툴 사용 시 pom.xlm 설정파일 안에 어떤 라이브러리를 다운 받을 지 설정만 해주면(Dependency) 빌드 및 관리 가능
IoC 분류
  • DL(Dependency Lookup) 의존성 검색 : 저장소에 저장되어 있는 Bean에 접근 시 컨테이너가 제공하는 API 사용
  • DI (Dependency Injection) 의존성 주입: 각 Class 간의 의존관계를 Bean 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
DI의 개념
  • 설정방법 : XML, annotation
  • 코드가 단순해지고, 컨테이너가 주체가 되어 의존관계를 주입해주고 실행 시 동적으로 의존관계 생성 됨
  • *bean : Spring이 관리하는 java 객체, container에게 관리를 부탁하는 java 객체들
Spring DI 컨테이너의 개념
  • BeanFactory
    • Bean을 관리하는 컨테이너
    • Bean을 등록, 생성, 조회, 반환 관리
    • BeanFactory를 확장한 ApplicationContext 사용
  • ApplicationContext
    • BeanFactory에 여러가지 container 기능을 추가한 것
Package 관리자

라이브러리 설치, 갱신, 삭제를 처리하는 Package Manager/ Dependency Manager

Language Package Manager
JAVA maven, gradle
Ruby RubyGems, Bundler
.NET nuget
Python PyPI
PHP Maven, Gradle
Node.JS Composer
JavaScript npm, yarn