블로그를 변경하였습니다.

해당 블로그는 더 이상 추가 포스팅 없을 예정입니다.

👉 새 블로그 방문하기


[Spring] 입문

2021. 6. 9. 22:52
728x90
반응형

SPRING MVC 흐름

 

모든 작업 명령은 DispatcherServlet에서 내린다.

 

 

 


스프링 프레임워크(Spring Framework)

DI x AOP 컨테이너를 중심으로 스프링 MVC와 스프링 JDBC등을 포함하는 스프링의 대명사 제품

 

DI(Dependecy Injection) 의존성 주입

객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입을 시켜주는 방식
AOP(Aspect Oriented Programming) 관점 지향 프로그래밍

어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 

 

기본적인 웹 시스템의 구조

정적인 컨텐츠 : 클라이언트 머신의 웹 브라우저가 네트워크에 있는 웹 서버(정적인 컨텐츠를 저장하는 서버)로부터 요청한 HTML을 읽어와 표시하면 된다.

 

동적인 컨텐츠 : 웹 서버에서 애플리케이션서버(웹 서버의 요구에 따라 컨텐츠를 동적으로 생성하는 서버)에 처리를 요청하고 대부분은 RDB에서 데이터를 읽어오거나 가공하면 그 처리 결과를 웹 서버에서 받아 웹 브라우저에 표시한다.

 

현재는 Ajax를 이용하면서 풍부한 화면을 웹 브라우저로 구현

 

 


애플리케이션 아키텍처

애플리케이션 전체의 구조, 공통된 방식(메카니즘)으로 정의되며,
시스템의 애플리케이션이 공통으로 이용할 수 있는
사용자 인터페이스 구조나 데이터베이스 접근 방식 등 시스템의 기반이 되는 부분을 말한다
.

 

애플리케이션 아키텍처의 목표

.개발효율
      - 의도를 파악하기 쉽고 이해하기 쉬운 구조

      - 테스트를 쉽게 할 수 있는 구조

.유연성
     - 변경하기 쉽고 기능을 추가하기 쉬운 구조
     - 미래의 환경 변화에 대응할 수 있는 견고한 구조

 

웹 애플리케이션의 아키텍처는 크게 물리층인 티어와 논리층인 레이어로 나누어진다.

 

물리층

: 클라이언트층(PC,스마트폰)-중간층(애플리케이션서버)-EIS(DB, 레거시스템)

논리층

: 기본적으로 중간층에 있는 웹 애플리케이션을 논리적으로 분류한 것

프레젠테이션층

: UI 와 컨트롤러 제공. 이층에는 클래스이름으로 Controller Action이 붙은 클래스가 놓인다.

비지니스 로직 층 

: 클래스 이름 끝에 Service가 붙은 유스케이스를 제어하는 클래스나 회사, 종업원, 주문등 업무대상 이름이 붙은 클래스가 놓인다.

데이터액세스층

: 데이터베이스 액세스를 추상화한다. 이층의 클래스 이름 끝에 DAO가 붙은 클래스가 놓인다.

컨트롤러

: 화면전환이나 화면에서 버튼이 눌렸을 때의 동작제어나 세션관리 등을 한다.

비지니스로직-서비스(애플리케이션)

: 유스케이스로 표현되는 특정업무나 특정부서처리의 통합, 트랜잭션의 기점
일반적으로 stateless(자신의 상태를 나타내는 값을 가지지 않는)클래스

비지니스로직-도메인

: 서버로부터 비지니스를 실행하는 데 있어 당연히 인식되는 고객이나 주문 같은 클래스의 집합이다.
자신이 무엇인지 나타내는 값과 그 값을 이용한 처리를 실현한다.

프레젠테이션 층의 역할

: 사용자 인터페이스와 컨트롤러의 제공이다.

컨트롤러의 가장 중요한 작업은 웹 애플리케이션의 상태(세션)로 저장해 이용하는 데이터를 관리하는 것이다. 컨트롤러는 일반적으로 MVC라고 불리는 JSP모델의 컨트롤러, 스몰토크에서 확립된 MVC패턴을 참고,
Model
부분에 JavaBean(또는 EJB),VIew부분에 JSP,Controller부분에는 Servlet을 사용한다.

 

** 애플리케이션을 부품화하자는 말
부품이 큰 쪽은 티어나 레이어가 되고 그보다 작은 부품은 패키지나 컴포넌트가 된다.

그리고 부품끼리는 인터페이스로 연결

 

 


Spring Project

- Spring MVC(웹애플리케이션 MVC 프레임워크)

- Spring Batch(배치처리용 프레임워크)
- Spring Security(
인증,허가 프레임워크)
- Spring Integration(
시스템 연계 프레임워크)
- Spring Data(
데이터 접근 추상화 프레임워

 

 

Spring Boot

자주 사용하는 프로젝트 조합 준비, 설정을 자동으로 수행, 서버 포함하고 있다.

=> 개발자가 적은 양의 애플리케이션 코드를 작성해서 바로 실행 할 수 있다.
=>
드롭위저드(비슷한 개념으로 만들어진 프레임워크)보다 많은 예제와 자료가 있다.
=>
웹애플리케이션 뿐 아니라 명령행 인터페이스(CLI, Command Line Interface)에서 동작하는

콘솔 프로그램이나 배치(Batch)프로그램을 만들때도 사용

 

* logback
log4j 기반으로 성능은 10배빠르고 메모리 사용량은 적다. 로그 설정변경 시 재시작 없이 바로 적용됨.
구현체로 slf4j(Simple Logging Facede for Java)를 함께 사용.
trace : 모든 로그 출력
debug: 개발할 때 디버그 용도로 사용
info: 상태 변경 등과 같은 정보서 메시지를 나타냄
warn: 프로그램의 실행에는 문제가 없지만 추후 시스템 에러의 원인이 될 수 있다는 경고성 메시지를 의미
error: 요청을 처리하던 중 문제가 발생한 것을 의미

 

Spring Interceptor

어떤 URI를 호출했을 때 해당 요청의 컨트롤러가 처리되기 전 또는 후에 작업을 하기 위해 사용된다.

이러한 역할은 필터(Filter)인터셉터(Interceptor)로 수행할 수 있다

 

필터(Filter) : 디스패처 서블릿 앞 단에서 동작

                      J2EE표준 스펙에 있는 서블릿 기능 중 하나

인터셉터(Interceptor) :  디스패처 서블릿에서 핸들러 컨트롤러로 가기 전에 동작.

                                        인터셉터는 스프링 프레임워크에서 제공되는 기능이므로 스프링 빈을 사용할 수 있다.

일반적으로 문자열 인코딩과 같은 웹 전반에서 사용되는 기능은 필터로 구현
클라이언트의 요청과 관련이 있는 여러 가지 처리 (예를 들어 로그인이나 인증, 권한등) 는 인터셉터로 처리한다.

 

 


728x90
반응형

'개발노트 > Spring' 카테고리의 다른 글

[Spring] JDBC  (0) 2021.06.18
[Spring] IoC(inversion of Control)  (0) 2021.06.18
[Spring] AOP(Aspect Oriented Programming)  (0) 2021.06.17
[Spring] src/main/resources 구조  (0) 2021.06.15
[Spring] lombok.jar 설정  (0) 2021.06.14

BELATED ARTICLES

more