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를 지원한다.
'Job Interview & etc > Java Web,Server' 카테고리의 다른 글
Java 웹/서버 개발자 면접 질문(알고리즘) (0) | 2019.12.12 |
---|---|
Java 웹/서버 개발자 면접 질문(java 문법 및 특징) (0) | 2019.12.12 |
Java / 웹 서비스 개발자 면접질문(기타 지식) (0) | 2019.12.05 |