반응형

1. Spring이란?

자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크

종속 객체를 생성해주고 조립해주는 도구 

  • 특징
    • 경량 컨테이너로 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하여 스프링으로 부터 필요한 객체 얻어 옴
    • POJO (Plain Old Java Object) 방식 프레임워크
      • 특정 인터페이스를 구현하거나 상속받을 필요 없어, 기존에 존재하는 라이브러리 등을 지원해, 용이하고 가벼움
    • 제어 역행(IOC) 기술 사용해 애플리케이션의 느슨한 결합 도모 
      • 컨드롤의 제어권이 프레임워크에 있어, 필요에 따라 스프링에 사용자의 코드 호출
    • 관점 지향 프로그래밍(AOP) 위한 풍부한 지원
      • 트랜잭션, 로깅, 보안 과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 , 따로 분리하여 관리할 수 있음
    • 의존성 주입(DI) 지원
      • 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크 서로 연결
    • 확장성이 높음

2. 스프링에서 공통 부분 관리

  • Filter  : 요청, 응답 거른 뒤 정제 / 스프링 컨텍스트 외부에 존재, 스프링과 무관한 자원에 동작
  • Interceptor  : 스프링의 DistpatcherServlet 이 컨트롤러를 호출하기 전, 후 끼어듬
                               스프링컨텍스트내부에서 Controller 요청, 응답 처리 
                               여러 개 사용 가능 
  • AOP : 로깅, 트랜잭션, 에러 처리 등 메서드 에서 조금 더 세밀하게 조정 

 

3. MVC 패턴(MODEL, VIEW, CONTROLLER)

model1 : 구분 필요없는 내용 / 주먹구구식, 작은 프로그램

model2 : 내용, 형식에 따라서 파일을 분류해서 프로그래밍 (MVC) /여러명이 작업

 

MODEL

  • 논리적 데이터 기반 구조 표현
  • 데이터와 관련된 저장, 가공
  • 데이터베이스, 처음 정의하는 상수, 초기값, 변수 
  • 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 함
  • 뷰, 컨트롤러에 대해 어떤 정보도 알지 말아야 한다
  • 변경 일어나면, 변경 통지에 대한 처리 방법을 구현

VIEW

  • 사용자에게 보여지는 화면 
  • 컨트롤러에 값을 받고 화면에 보여줌 
  • 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
  • 모델이나 컨트롤러 같이 다른 구성 요소들을 몰라야한다
  • 변경이 일어나면 변경통지에 대한 처리 방법 구현

Controller

  • model, view 내의 클래스들 간 정보 교환
  • model, view를 가지고 있어 값을 처리하고 화면에 보여주는 것 
  • 데이터와 사용자인터페이스 요소들을 잇는 다리 역할
  • 모델, 뷰에 대해 알고 있어야 한다.
  • 모델, 뷰 변경 모니터링

서로 분리하여 각자의 역할에 집중하게 개발하고 유지 보수성, 애플리케이션 확장성, 유연성이 증가하고 , 중복코딩 또한 사라진다

 

4. 장고 VS 스프링

장고 

  • PYTHON + MVC 패턴 + 관습 지향 + ORM + 라이브러리 => 완전 고수준 프레임워크
  • 스크립트 언어 사용하기에 디버깅이 굉장히 수훨 
  • 동시요청 처리능력은 좋지 않음
  • 주요 기능
    • MVC 패턴 기반 MVT
    • ORM(Object relational mapping)

스프링

  • JAVA Servlet + MVC 패턴 + DI, AOP + 라이브러리
  • 아파치 + 톰캣 + 스프링 + MYSQL 조합
  • 컴파일 언어 이기에 배포가 까다로움
  • 주요 기능
  • DI (Dependency Injection) : 의존 관계 주입
    •  각각의 계층이나 서비스 간에 의존성이 존재할 경우 Spring이 서로 연결시켜 준다.
  • AOP (Aspect Orientated Programming) : 관점 중심 프로그래밍
    •  여러 곳에서 공통적으로 쓰이는 기능들을 분리하여 개발하고 실행 시에 서로 조합할 수 있는 AOP를 지원한다.
반응형

+ Recent posts