WEB -> MVC1,2 -> Spring

5061 단어 SpringSpring

web 구조

Client-- HTTP Protocol--> Server
(HTTP Protocol은 DB연결x => data를 파라미터 형태로 넣어 서버에 요청한다)


MVC 패턴이란?
MVC 는 Model, View, Controller의 약자 입니다. 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴

MVC 1,2 패턴은 web에서 어떻게 적용될까?

MVC1 구조 : view와 logic을 JSP페이지에서 처리하는 구조
장점단점
구조 단순 & 직관적view와 logic이 섞여있음 => JSP코드가 복잡 & 분업 어려움
개발시간 short => 비용 감소유지보수가 어렵다
신기술 도입, framework 등 확장성 나쁘다

MVC2 구조
Model(Service,Dao,Dto : logic처리)
View(JSP : 화면 처리)
Controller(Servlet : client 요청 처리)
장점단점
view와 logic 분리 => 코드가 model1에 비해 간단 & 분업 용이구조 복잡해 초기진입이 어렵다
유지보수가 쉽다개발시간 증가 => 개발비용 증가
신기술 도입, framework 등 확장성 좋다

Spring Framework

Spring을 왜 사용할까??

  • DI/IoC를 통해 단위 테스트를 가능
  • AOP를 통해 복잡한 코드를 감소시킨다.
    ==> 개발자 생산성을 향상, 유지보수 비용 감소

POJO란?
Plain Old Java Object
특정 환경이나 기술에 종속적이지 않은 객체지향 원리에 충실한 자바객체
테스트하기 용이 & 객체지향 설계를 자유롭게 적용가능

PSA란?
Portable Service Abstraction
환경과 세부기술의 변경과 관계없이 일관된 방식으로 기술에 접근할 수 있게 해주는 설계 원칙
ex. db에 관계없이 동일하게 적용할 수 있는 트랜잭션 처리방식

DI란?
Dependency Injection
B라는 객체를 spring container에서 알아서 만들어서 A 객체에 주입한다
==> A입장에서는 그냥 사용하면 된다

IoC란?
Inversion of Container
객체를 new를 사용해서 생성 ==> 스프링이 만들어놓은 객체를 필요할때 가져다 사용

public class UserServiceImpl implements UserService {
    private UserRepositoryImpl userRepository = new UserRepositoryImpl();
    ....
}
public class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;
    ....
}

AOP란?
Aspect Oriented Programming
관심사의 분리 => 소프트웨어의 모듈성을 향상
트랜잭션/로깅/보안과 같이 여러 모듈에서 공통으로 필요로하는 기능 분리 => 각모듈에 적용

Spring MVC Pattern


참고 사이트

[web, mvc]
https://nickjoit.tistory.com/9?category=590747
https://m.blog.naver.com/jhc9639/220967034588
https://gmlwjd9405.github.io/2018/11/04/servlet-vs-jsp.html
https://youtechpoint.blogspot.com/2018/10/mvc1-vs-mvc2.html
[spring]
https://velog.io/@ljinsk3/Spring%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0

좋은 웹페이지 즐겨찾기