Model1

view+controller, model를 view와 Controller를 한 곳에서 처리한다.

 

특징

1. 자바 코드와 JSP 페이지 코드가 섞여서 복잡한 코드가 됩니다.

2. 구조가 단순하여 간단한 페이지를 구성할 때 빠르게 개발 할 수 있습니다.

3. 백엔드와 프론트 엔드가 하나의 페이지에 있어서 분업이 어렵다

 

Model2

view, Controller, model을 분리해서 처리

 

특징

1. 보여주는 view(JSP페이지), 처리 하는 model(빈,클랙스), 제어하는 controller(서블릿)로 확실하게 나뉜다.

2. 백엔드와 프론트 엔드가 나뉘어져 분업이 편리하다.

 

 

 

Spring MVC pattern

 


Spring framework /Spring boot

 

Spring framework

과거 버전 - EJB에 비해서 많은 부분 발전한 버전이다.

하지만 설정하는 것에 어려움이 많다.

그럼에도 spring은 아래와 같은 강력을 토대로 대표적인 java framework로 자리 잡았다.

 

경량 컨테이너

IoC(Invertion of Control: 제어 역행)

Di(Dependency Injection: 의존성 주입)

AOP(Aspect-Oriented Programming: 관점지향 프로그래밍)

 

Spring Boot

이와 같은 스프링의 단점을 해결하고자 나온것이 바로 Spring Boot이다. spring boot는 환경 설정을 최소화한다. (사용자가 해야 할 부분을 대부분 spring boot가 해준다) 따라서 생산성을 크게 향상했다

 


POJO

Plain old Java Object의 약자이다.

말 그대로 해석을 하면 오래된 방식의 간단한 자바 오브젝트라는 말이다

POJO란 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다.

 


IoC

IoC란 Inversion of Control의 약자이다.

해석하자면 제어의 역전이다.

어떤 객체가 사용할 객체(의존관계인 객체)를 직접 선언하여 사용하는 것이 아니라, 어떤 방법을 사용하여(ex. 생성자)사용하여 주입 받아 사용하는 것이다.

 

/* 일반적인 제어권: 자기가 사용할 의존성은 자기가 만들어서 사용 */

public class CarService {

private CarRepository carRepository = new CarRepository();

}

 

vs

 

Ioc

다른 누군가가 의존성을 밖에서 준다.(제어권의 역전)

CarRepository를 사용은 하지만 만들지는 않는다.

생성자를 통해서 받아온다. 따라서 의존성을 관리하는 일은 CarService가 하는 일이아니다.

누군가 밖에서 해주는 것이다.

public class CarService {

private CarRepository carRepository;

public CarService(CarRepository carRepository){

this.carRepository = carRepository;

}

}

 


DI

Dependency Injection의 약자이다.

말그대로 "의존성 주입" 을 말한다.

Spring 의 Container 들은 Bean 객체들을 관리하는 데 있어서 DI 를 이용하며 이를 통해 Life Cycle 을 용이하게 관리할 수 있으며 이 것이 스프링 프레임워크의 핵심적인 동작이라고 할 수 있다.

 

 

- Dependency Injection 을 통해 얻을 수 있는 장점 -

(1) Dependency Reduction : 객체 상호 간 의존성 관계를 줄여준다.

(2) Reusable Structure : 코드의 재사용과 조합이 용이하다.

(3) Readability : 코드들이 분리되다보니 가독성이 뛰어나진다.

(4) Loose Coupling & Easy to change : 구조는 변화에 민감하지 않을 수 있다.

 

public class Sample {



@Autowired

private Example example;



}



public class Sample {

private Example example;



@Autowired

public void setExample(Example example) {

this.example = example;

}

}

 


AOP

Aspect-Oriented Programming

AOP는 애플리케이션 전체에 걸쳐 사용되는 기능을 재사용하도록 지원하는 것이다.

AOP라고 해서 전에 없던 새로운 개념이 등장한것이 아닙니다. 결국은 공통된 기능을 재사용하는 기법이다.

 

 

 


DAO 정의

Data Access Object의 약자이다. 간단히 Database의 data에 접근을 위한 객체.

Database에 접근을 하기위한 로직과 비즈니스 로직을 분리하기 위해서 사용한다.

즉 DB를 사용해 데이터를 조화하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다.

 

DTO(=VO)

DTO(Data Transfer Object)는 VO(Value Object)로 바꿔 말할 수 있다.

DTO는 로직을 갖고 있지 않는 순수한 데이터 객체이며 속성과 그 속성에 접근하기 위한 getter, setter 메소드만 가진 클래스를 말한다.

 

DTO 클래스 예제

public class TestDto {
private String name;
private int value;
private String data;
public String getName() {
return name;
}
public void setName(String name) { 
this.name = name;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}

 

 

'Web' 카테고리의 다른 글

[Web] Responsive Web / Box-sizing  (0) 2021.06.17
[web] Javascript Form value 접근방법 2가지, style변경  (0) 2021.06.17
[web] JSP Expression language  (0) 2021.06.17
[web] JSP action tags  (0) 2021.06.17
[web] JSP directives  (0) 2021.06.17

+ Recent posts