*스프링 프레임 워크란?
스프링 MVC는 스프링의 서브 프로젝트라는것.
스프링은 하나의 기능을 위해서 만들어진 프레임워크가 아니라 '코어'라고 할수 있는 프레임워크에
여러 서브 프로젝트를 결합해서 다양한 상황에 대처할수 있도록 개발됨
*프로젝트의 로딩구조
프로젝트 구동시 관여하는 xml은 web.xml, root-contex.xml, servlet-context.xml 파일임.
web.xml은 Tomcat 구동과 관련된 설정이고 나머지 두파일은 스프링과 관련된 설정
프로젝트 구동은 web.xml에서 시작
<context-param> 에는 root-contex.xml 경로가 설정되있고
<listener>에는 스프링 mvc의 ContextLoaderListener가 등록되있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
|
cs |
프로젝트 실행시 가장 먼저 로그 출력하며 기록 , root-context.xml 처리가 되면 파일에 있는 빈설정이 동작함.
root-context.xml에 정의된 객체들은 스프링영역에 생성되고 객체들간의 의존성 처리된후
스프링 mvc에서 사용하는 dispatcherServlet이라는 서블릿이 동작.(가장 핵심 클래스)
내부적으로 웹 관련 처리의 준비작업을 진행 그때 사용하는 파일이 sevlet-context.xml 임.
다 처리후 등록된 객체들은 기존에 만들어진객체들과 같이 연동하게 됨.
*모델 2와 스프링
스프링 MVC 역시 내부적으로는 Servlet API 를 활용함.
모델 2 방식은 쉽게 말해서 '로직과 화면을 분리'하는 스타일의 개발방식
이렇게 설계하는 가장 중요한 이유는 나중에 View를 교체하더라도
사용자가 호출하는 url 자체에 변화가 없게 만들어 주기 때문
'읽은 책 정리 > 코드로 배우는 스프링 웹 프로젝트' 카테고리의 다른 글
[Spring] 프레젠테이션(웹)계층의 CRUD구현 (0) | 2020.12.17 |
---|---|
[Spring] 스프링의 MVC의 Controller (0) | 2020.12.15 |
[Spring] MyBatis와 스프링 연동 (0) | 2020.12.13 |
[Spring] 스프링과 oracle Database연동 (0) | 2020.12.13 |
[Spring] 스프링의 특징과 의존성주입 (0) | 2020.12.13 |