inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

스프링 부트에서 나오는 컨텍스트들 질문드립니다

404

hsg0208

작성한 질문수 16

1

서블릿 컨텍스트 라는 용어 인데요 제가 아는 컨텍스트는 여러 스레드에서도 공통의 자원을 공유하기 위해서 사용하는 컨테이너 정도로 알고 있습니다.

그런데 스프링 부트 기준으로 상당히 많은 컨텍스트가 있더라고요 각각의 역할과 생성시점에 대해 여쭈어 보고싶습니다

또 이 annotationConfigServletWebServerApplicationContext가 스프링 컨테이너 인가요?

또 자료를 찾아보니 dispatcherServlet이 웹어플리케이션 컨텍스트를 구성한다고 하는데 이 컨텍스트가 왜 dispatcherServlet이 생성을 하는 지 모르겠습니다. 

 

springbootapplication.run의 결과로 annotationConfigServletWebServerApplicationContext가 나오고 하위에

ServletContext beanFactory가 나오는데 각각 어떤 역할을 하는지도 알려주시면 감사하겠습니다!

MVC spring

답변 1

4

David

안녕하세요. hsg0208님, 공식 서포터즈 David입니다.

 

또 이 annotationConfigServletWebServerApplicationContext가 스프링 컨테이너 인가요?

=> 네, 여러가지 기능이 확장된 스프링 컨테이너입니다.

 

또 자료를 찾아보니 dispatcherServlet이 웹어플리케이션 컨텍스트를 구성한다고 하는데 이 컨텍스트가 왜 dispatcherServlet이 생성을 하는 지 모르겠습니다. 

=> 서블릿 자체에 Root WebApplicationContext를 상속하는 ServletWebApplicationContext를 만듭니다. 이런 컨텍스트 계층 구조 갖는 이유는 서블릿 자체에서만 사용할 객체와 서블릿 간 사용될 수 있는 객체를 별도의 컨텍스트에서 관리하기 위함입니다. 자세한 내용은 Spring MVC 공식 문서를 참고해주세요.

https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-servlet-context-hierarchy

그러나 스프링 부트의 경우 별도로 컨텍스트를 나누지 않습니다.

Spring Boot 내부동작 - https://www.youtube.com/watch?v=uCE3x4-GQ0k&t=432s

Spring Boot 내부 Context - https://nowsogood.github.io/spring/springboot-06-context-sep/#spring-mvc%EC%97%90%EC%84%9C%EC%9D%98-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8-%EB%B6%84%EB%A6%AC

 

springbootapplication.run의 결과로 annotationConfigServletWebServerApplicationContext가 나오고 하위에 ServletContext beanFactory가 나오는데 각각 어떤 역할을 하는지도 알려주시면 감사하겠습니다!

=>

ServletContext는 다음 문서를 참고해주세요. https://docs.oracle.com/javaee/7/api/javax/servlet/ServletContext.html

https://codeofenow.tistory.com/32

 

BeanFactory는 IoC를 담당하는 핵심 컨테이너입니다. 이를 확장한 것이 스프링의 Application Context입니다.

https://docs.spring.io/spring-framework/docs/1.2.x/reference/beans.html#:~:text=The%20BeanFactory%20is%20the%20actual,thus%20have%20dependencies%20between%20themselves.

토비의 스프링 3.1 - p101

 

 

용어의 정의, 역할은 공식문서를 기준으로 다른 컨텐츠(블로그, 책, 영상 등)를 함께 찾아보시면 좋습니다. 물론 이 과정에서 한 번에 이해되는 경우는 드물지만 공식문서에서 언급되는 키워드들을 하나씩 찾아가며 0이었던 이해도를 1씩 높여가는 과정이 필요합니다.

생성 시점은 직접 디버깅하여 확인하시는 게 제일 빠릅니다. 확인하기 원하는 객체 생성자에 브레이크 포인트 걸고 디버깅 모드로 실행하면 바로 확인 가능하며 어디에서 호출되는지는 호출스택을 역순으로 탐색하시면 됩니다.

시간은 조금 걸리겠지만 이런 시간들을 충분히 가지시면 학습과 성장에 더욱 도움이 될 것 같습니다:)

 

감사합니다.

0

suheonj95

감사합니다 ㅎㅎ 깊이가 느껴지는 답변이십니다 또한 공부 방향성에도 도움이 많이 되었습니다^^

mvc 패턴 - 적용 강의에서 회원가입할 때 redirect가 아닌 forward인 이유가 궁금합니다.

0

29

1

servlet과 container에 대한 질문입니다

0

54

1

api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?

0

84

1

jsp 의존성 수정 요청

0

122

2

요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?

0

158

1

save() 메서드 문의

0

77

1

절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상

0

112

1

request-body-json

0

94

2

MVC 패턴의 적용 단위

0

103

1

RequestMapping을 이용한 핸들러, 어댑터

0

124

2

save 후 결과화면

0

100

2

jsp를 이용한 view

0

102

1

application.properties에 debug 추가해도 결과가 똑같습니다.

0

189

1

수업 코드 제공 관련 문의

0

106

2

RequestMappingHandlerAdapter의 Controller 호출 과정

0

109

3

파일 오픈 시

0

75

1

스프링 배치 관련

0

81

1

@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부

0

115

1

postman으로 /request-body-json-v1 호출시 500 error

0

105

1

프론트엔드와 백엔드의 mvc, rest api에 대한 질문

0

90

1

모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문

0

119

1

console log 출력 관련 질문입니다.

0

79

1

애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ

0

146

1

html 변경하는 부분 적용 문제

0

108

1