Spring

[Spring] 스프링 왜 사용할까?

코북 2021. 8. 31. 09:22

 

 

스프링 수업 내용 필기입니다

 

▶ 스프링 프레임워크?
프레임워크는 하나의 방법론이다
우리나라 전자정부 표준프레임워크가 스프링 기반으로 되어있다
표준프레임워크 포털에서 관리
이클립스에 여러가지 모듈을 탑재

 

▷ JDBC = Java + SQL
1. 섞어서 사용하기 때문에 유지보수가 어려움
2. 모든 코드를 짜야하기 때문에 개발속도가 느려 생산성이 떨어짐

--> JDBC를 대신 MyBatis 프레임워크를 사용한다

▷ MyBatis (DB 프레임워크)
Java와 SQL을 분리해서 코딩
Java와 SQL을 연결하는 행위를 Mapping이라함
분리된 것을 Mapping해서 사용


▷ web = servlet(Controller) + jsp(View), class(Model, DAO, DTO)
스프링에서는 servlet 사용 X, jsp 사용 X, Model만 사용한다
--> 스프링 프레임워크의 다른 기술들로 대체

 

▶ 스프링은 MVC를 기본으로 한다
프레임워크는 하나의 방법론이다
눈에 보이지 않음 -> 코딩을 직접 해봐야 알 수 있다

▶ Spring 폴더의 S와 M의 의미
S -> Spring
M -> Maven, Spring 프레임워크의 관리도구 툴
프로젝트를 빌드하고 라이브러리(API)를 관리해주는 도구

▶ 3 Tier Architecture
▷ Presentation Layer (Web Layer)
Client --요청(handle)--> Server
1. FrontController ( servlet : Controller ) 시키는 얘 -> 스프링은 만들지 않고 알아서 제공, DispatcherServlet
2. HandlerMapping -> F.C. 와 POJO를 연결, handle을 전해줌 -> 스프링에서 제공
3. POJO**( Plain Old Java Object ) ( java : Controller ) F.C.가 할일을 대신해주는 얘, 실제 일하는 얘

POJO가 결과값을 F.C. 에게 리턴해준다

하지만, 논리적인 경로를 보내줬기 때문에 F.C.는 해석할 수 없다

--> F.C.는 View Resolver에게 값을 보내 논리적인 경로를 물리적인 경로로 다시 받는다 

4. ViewResolver -> POJO가 리턴한 논리적 경로를 물리적 경로로 바꿔 F.C.에게 보내준다-> 스프링에서 제공

-->> 나머지가 다 만들어져있기 때문에 스프링은 POJO부터 만들면 된다, 생산성 up

F.C.는 ViewResolver에게 받은 값으로 View(jsp)로 간다.

View(jsp)는 F.C.가 요청한 값을 보내준다. 

F.C.는 받은 값을 Client에게 보내준다.


▷ Business Layer(Service Layer)
Presentation Layer와 Persistence Layer를 연결해준다
로직을 처리하는 역할

▷ Persistence Layer 
Model(Repository)

 

▶ JSP는 webapp/WEB-INF/views 에다가 만든다
왜 webapp이 아닌 views에 만드는가?
Client가 F.C. 없이 바로 View에 요청하지 못하게 하기 위해서! 
Client는 서버에 요청할 때 무조건 F.C.를 거쳐야한다.

F.C.없이 실행할 경우 주소 = http://localhost:8081/web/WEB-INF/views/boardList.jsp
WEB-INF 는 톰캣의 보안 디렉토리 -> 브라우저에 WEB-INF가 노출되면 안된다
--> JSP는 URL상에 노출되지 않는다
Client가 http://localhost:8081/web/boardList.do 로 요청하면 그때 서버에서 처리해서 보여주는 것

forwarding, con view 사이에서 일어남