본문 바로가기

카테고리 없음

Spring

JSP Model1, Model2, Spring MVC pattern

먼저  JSP에서 모든 로직과 출력을 처리하는지 JSP에서 출력만 처리하는지에 따라 모델 1과 모델 2의 구조로 구분된다.

Model 1

모델 1 방식은 JSP가 데이터 입력과 출력은, 자바빈이 데이터 처리를 담당하는 구조를 가진다.

 

장점 : 단순한 구조로 간단한페이지를 구성할시 빠르게 개발할 수 있다

단점 : JSP페이지에서 모든 로직과 뷰를 처리하기에 JSP페이지 내에 자바 코드가 섞이게 되어 코드가 복잡해지므로 백엔드롸 프론트엔드의 분업이나 코드 유지보수가 어렵게 된다.

 

Model 2

모델 2에서는 서블릿이 데이터 입력과 데이터 처리를 담당하고, 처리된 데이터를 자바빈에 담아 JSP에 전달한다. JSP는 모델 1과 다르게 데이터의 출력만을 담당한다.

 

장점: view-JSP페이지, model-Bean, contoller-Servlet으로 보여주고, 처리하고, 제아하는 것들이 분업되어있고 그로 인해 백엔드롸 프론트 엔드의 분업도 편리해진다

단점: 구조가 복잡하고 학습이 어려우며 설정 및 작업분량이 많다.

 

MVC Pattern

MVC 패턴을 모델 2방식과 유사하며 모델 1 방식의 단점을 해소하였다.

 

Controller : 데이터를 입력받고 모델과 뷰를 호출한다.

Model : 데이터 처리 로직을 구현한다.

View : 실행 결과를 출력한다.

 

장점: 출력을 위한 view와 로직을 위한 자바 코드를 분리하여 복잡하지 않으며 분업과 유지보수가 용이하다.

단점: 구조가 복잡하여 학습이 어렵고 작업분량이 많다. 

 


Spring framework /Spring boot

Spring framework란

 

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

Spirng Framework는 경량 컨테이너로 자바 객체를 담고 직접 관리한다.

 

Spring Framework 구조

 

Spring Framework 정의


- 자바(JAVA) 플랫폼을 위한 오픈소스(Open Source) 어플리케이션 프레임워크
- 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크
- 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 도구
- POJO(Plain Old Java Object) BEAN CONTAINNER


Spring Framework 특징

- 크기와 부하의 측면에서 경량
- 제어 역행(IoC)를 통하여 어플리케이션의 느슨한 결합을 도모
- 관점지향(AOP) 프로그래밍을 위한 풍부한 지원을 함.
- 어플리케이션 객체의 생명주기와 설정을 포함하고 관리한다는 점에서 일종의 컨테이너라고 할 수 있음.
- 간단한 컴포넌트로 복잡한 어플리케이션을 구성하고 설정할 수 있음.


 

Spring boot는 스프링부트는 실행만 하면 스프링 기반의 상용화가 가능한  애플리케이션을 쉽게 만들기 위해 단독 실행을 가능하게 해주는 스프링 프로젝트이다.

 

스프링부트의 특징


- 단독으로 실행이 가능한 스프링 애플리케이션을 생성함
- Tomcat, Jetty, Undertow 를 내장
- 기본설정이 되어있는 starter 컴포넌트를 제공
- 가능한 자동으로 설정되어 있음
- 상용화에 필요한 통계, 상태 체크, 외부 설정 등을 제공
설정을 위한 XML 코드를 생성하거나 요구하지 않음

 


POJO

POJO (Plain Old Java Object) 평범한 자바 오브젝트로 해석 될 수 있다. 

POJO는 특정 규약이나 환경에 종속되지 않으며 객체지향에 충실하다

POJO는 코드가 간결하고 자동화 테스트에 유리하며 객체지향적 설계가 간편하다

 

POJO 프레임워크는 POJO를 이용한 애플리케이션 개발이 가진 특징과 장점을 그대로 살리면서 EJB에서 제공하는 엔터프라이즈 서비스와 기술을 그대로 사용할 수 있도록 도와주는 프레임워크이다.

스프링은 POJO의 프레임 워크중 하나이다. 

 

IoC

IoC (Inversion of Control) 는 제어의 역전, 즉 외부에서 제어를 한다는 뜻을 가지고 있으며 컨테이너이다. 

객체에 대한 제어권이 개발자로부터 컨테이너에게 넘어가면서 객체의 생성부터 생명주기 관리까지의 모든 것을 컨테이너가 맡아서 하게되는 것을 제어의 흐름이 바뀌었다고 하여 IoC라 한다. 

 

이렇게 제어권이 컨테이너로 넘어옴으로써 DI(의존성 주입), AOP(과점 지향 프로그래밍) 등이 가능하게 된다.


DI (3 types)

DI (Dependency Injection)는 객체 간의 의존성을 자신이 아닌 외부에서 주입하는개념이다. 

직접 객체를 생성하지 않고, 외부에서 객체를 생성 후 사용할 객체에 주입을 시켜주어 사용하는 것이다.

 

Dependency Injection(의존성 주입)과 Inversion Of Control(제어의 역전)은 같은 의미로 사용되며 IoC는 DI를 통해 달성된다.

 

의존성 주입 방법은 세가지가 있다

Contructor Injection : 생성자를 통한 전달
Method(Setter) Injection : setter()을 통한 전달
Field Injection : 멤버 변수를 통한 전달

 

장점

종속성이 감소하고 재사용성이 증가한다. 많은 테스트 코드를 만들 수 있고 코드가 읽기 쉬워진다.

AOP

AOP (Aspect Oriented Programming) 관점 지향 프로그래밍은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다

소스 코드 상에서 다른 부분에 반복해서 쓰는 코드들을 흩어진 관심사라고 부른다. 

이 흩어진 관심사들을 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용한다.

 

AOP 용어

Target : 부가기능을 부여할 대상

Aspect : 핵심기능에 부가되어 의미를 갖는 특별한 모듈

Advice : 실질적으로 부가기능을 담은 구현체

PointCut : 부가기능이 적용될 대상을 선정하는 방법

JoinPoint : 어드바이스가 적용될 수 있는 위치

Proxy : 타겟을 감싸서 타겟의 요청을 대신 받아주는 랩핑 오브젝트

Introduction : 타겟 틀래스에 코드 변경없이 신규 메소드나 멤버 변수를 추가하는 기능

Weaving : 지정된 객체에 애스팩트를 적용해서 새로운 프록시 객체를 생성하는 과정

 

Advice의 종류
Before : 대상 객체의 메서드가 호출되기 전에 기능을 실행합니다
After : Advice 대상 객체의 메서드가 호출된 후에 기능을 실행합니다.
Around : Advice 대상 객체의 메서드가 호출되기 전, 후에 모두 기능을 실행합니다.


DTO

DTO(Data Transfer Object) 는 VO(Value Object)라고도 표현하며 계층간 데이터 교환을 위한 자바빈즈(Java Beans)다.

DTO는 Database에서 Data를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체를 말한다


DAO

DAO(Data Access Object)는 DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다.

domain logic (비즈니스 로직이나 DB와 관련없는 코드들)을 persistence mechanism과 분리하기 위해 사용한다.