WEB -> MVC1,2 -> Spring
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
Author And Source
이 문제에 관하여(WEB -> MVC1,2 -> Spring), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ok2qw66/Spring기본저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)