본문 바로가기

Frame Work/Spring

(12)
2-Layered Architecture 2-Layered Architecture 일반적으로 프레임워크 기반의 웹 프로젝트에서 사용하는 방식으로 아래와 같이 두 개의 레이어로 나누어서 시스템을 개발하는 방식을 의미합니다. - 기본적인 스프링 MVC 프로젝트 생성 시 2가지 Layer 기준으로 xml 설정 파일도 두가지로 나눕니다. 1) Presentation-layer.xml (Presentation Layer) : /WEB-INF/ 하위 경로에 위치 (기본 파일명: servlet-context.xml) 2) Application-layer.xml (Business Layer) : /WEB-INF/ 하위 경로에 위치 (기본 파일명 : root-context.xml) - 기본적으로 위의 사진과 같이 웹을 로딩하면 Presentation Layer..
Spring Annotation Spring Annotation? 스프링의 xml 설정 파일은 HandlerMapping, Controller, ViewResolver 등등 여러 클래스를 bean으로 등록해야 하기 때문에 나중에 과도한 xml 설정으로 유지보수가 어려워질 수 있다는 한계가 있습니다. 따라서 어노테이션이라는 '@' 방식으로 xml 파일의 설정을 최소화 하여 그 한계를 극복하기 위해 등장했습니다. 오늘 포스팅에서는 기본적인 어노테이션 사용 방식과 종류에 대해 알아 보겠습니다. 사용방식 및 종류 Spring MVC Annotation을 사용하려면 먼저 루트 엘림너트에 context 네임 스페이스를 추가한 후, tag를 생성합니다. @ Controller xml 설정으로 컨트롤러 클래스를 따로 만들어서 관리 하는 방식과 달리 ..
Spring MVC ※ Spring MVC 흐름 - 이전의 MVC FrameWork 구조 포스팅과 비교 했을 때 달라진 구조를 순서에 따라서 보겠습니다. - Sevlet은 *.do를 기준으로 하겠습니다. 1) 클라이언트로부터 모든 "*.do" 요청을 DispatcherServlet이 받습니다. 2) DispatcherServlet은 HandlerMapping을 통해 요청을 처리할 Controller를 검색합니다. 3) DispatcherServlet은 검색된 Controller를 실행하여 클라이언트의 요청을 처리합니다. 4) Controller는 비지니스 로직의 수행 결과를 얻어낸 Model 정보와 Model을 보여줄 View 정보를 ModelAndView 객체에 저장하여 리턴합니다. 5) DispatcherServlet은..
MVC FrameWork 구조 MVC Frame Work를 직접 구현해보기 이전 포스팅에서는 MVC1과 MVC2 모델의 정의와 그 예시를 간단하게 보았습니다. 구현을 하면서 DispatcherServlet 클래스 하나로 Controller를 상속받아 기능을 구현했습니다. 이렇게 하나의 서블릿 클래스로 Controller를 구현하면 클라이언트의 모든 요청을 하나의 서블릿이 처리하게 됩니다. 따라서 기능이 점점 늘어나면 수많은 if 로직이 생길 수 밖에 없고 이는 오히려 개발과 유지보수 측면에서 더 어렵게 만듭니다. 따라서 Controller를 구현 할 때 다양한 디자인 패턴을 결합하여 개발과 유지보수의 편의성이 보장되도록 잘 만들어야 합니다. 그래서 등장한 것이 Spring MVC 프레임 워크입니다. 오늘의 포스팅은 Spring MVC..
MVC pattern ※ MVC Model, View, Controller의 약자로 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. ※ 종류 - 90년대 말 W3C 협회에서 MVC1과 MVC2 모델을 동시에 내놓았는데 그 당시에 MVC1의 패턴 방식이 더 쉬워 보여서 MVC1을 사용해왔습니다. 그러나, 웹이 점점 발전하고 페이지를 구성하는 코드의 복잡도가 높아지면서 유지보수가 어려워졌고 유지보수가 쉬운 MVC2가 현재 사용하고 있으며 MVC1은 사용하지 않고 있습니다. 1) MVC 1 모델 - JSP 와 JavaBeans만을 사용하여 웹을 개발하는 것으로 JavaBeans는 데이터베이스에 연동되는 자바의 객체를 의미합니다. - Model의 정확한 의미는 데이터베이스 연동 로직..
Spring Transaction Transaction? 트랜잭션은 성공적으로 처리되거나 또는 하나라도 실패하면 완전히 실패를 해야 하는 경우에 사용 됩니다. 예를 들어 도서구매 과정을 보면 ① 결제를 수행한다. ② 결제 내역을 저장한다. ③ 구매 내역을 저장한다. 이렇게 3단계로 이루어질 것이다. 이와 같은 과정은 구매 시 반드시 성공적으로 이루어져야 한다. 한 가지 과정이라도 실패할 경우 반드시 모든 과정이 취소되어야 합니다. Spring Transaction 스프링은 코드 기반의 트랜잭션 처리뿐만 아니라 선언적 트랜잭션을 지원하고 있습니다. 개발자가 직접적으로 트랜잭션의 범위를 코드 수준에서 정의하고 싶은 경우엔 스프링이 제공하는 Transaction Template class를 이용하여 손쉽게 트랜잭션의 적용 범위를 지정할 수 있..
Spring JDBC Spring JDBC? 기존의 JDBC 코드들을 살펴보면 드라이버 로딩, 커넥션 연결, SQL문 전송, 결과 반환 등 일련의 반복된 과정을 수행하도록 구성되어 있습니다. 이 과정은 개발자의 입장에서는 매번 써줘야 하는 번거로움이 있습니다. 또한 insert 작업이나 update 작업이나 SQL 구문만 조금씩 다를 뿐 JDBC 처리과정에 해당하는 자바코드는 거의 비슷합니다. 이런 환경에서 새로운 기능의 메서드를 개발하려면 결국 기존의 메서드를 복사한 뒤, SQL 구문을 수정하는 방법을 써야합니다. 만약, 누군가 DB 연동에 필요한 자바 코드를 대신 처리하고 개발자는 실행되는 SQL 구문만 관리할 수 있다면 개발과 유지보수는 훨씬 편해질 것입니다. 이러한 기능을 대신 해주는 것이 바로 Spring JDBC ..
Spring AOP ※ AOP(Aspect Oriented Programming) ? 어플리케이션은 다양한 공통 기능이 필요하고 이러한 공통 기능들은 어플리케이션의 핵심 비지니스 로직과 구분되는 기능입니다. 핵심 비지니스 로직과 구분하기 위해 공통 기능을 공통 관심 사항(Cross-Cutting Concern) 이라고 표현하며, 핵심 로직을 핵심 관심 사항(Core Concern)이라고 표현합니다. 이때 공통의 관심사항들을 객체 지향 기법(상속이나 위임 등등)을 사용해서 여러 모듈에 효과적으로 적용하는데 한계가 있고 이는 중복된 코드를 만들어낸다. 이런 한계를 극복하기 위해 AOP 프로그래밍 기법이 등장했습니다. AOP는 문제를 바라보는 관점을 기준으로 프로그래밍 하는 기법을 의미합니다. 핵심 로직을 구현한 코드에 공통된 ..