。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

[네이버클라우드] 클라우드 기반의 개발자 과정 7기/웹프로그래밍

[NC7기-92일차(9월6일)] - 웹프로그래밍 73일차

quarrrter 2023. 9. 6. 17:38

78. Spring WebMVC 프레임워크 도입하기 

-Spring WebMVC 사용법 

 

 

CORS : cross oigin 

웹페이지를 가져온 곳이 아닌 다른 출처에 요청을 하는 방법 

 

DispatcherServlet  /프론트 컨트롤러 

 

서블릿 등록

1. 고전적 방법: Web information/web.xml 에 DispatcherServlet을 알린다.

 

2.  ServletContextListner에서 직접 객체 생성과 등록 

노란색: 서블릿 컨텍스트에 디스패처서블릿 등록

SpringServletContainerInitialLizer는 1-2-3 과정으로 생김

SpringServletContainerInitialLizer/ onStartup으로 웹어플리케이션이니셜라이저가 호출됨. 

그리고 그 인터페이스를 구현한 클래스가 잇으면 호출됨 . 없으면 무시

 

톰캣서버 시작할때 ioc컨테이너 만들고 프론트컨트롤러 만들어짐. 

 

3. Spring의 WebApplicationInitialLizer 객체 생성과 등록 

앱 시작되면 서블릿컨텍스트리스너를 구현한 컨텍스트로더리스너라는 메서드 실행. 실행하면 ioc컨테이너를 만듬. (저 사람이 contextLoaderListener임)

 

ioc컨테이너 만들고 app에 주입 

ioc 컨테이너가 안 만들어지면 컨텍스트로더 리스너도 안 만듬. 

MyWebApplicationInitializer3 생성

오른쪽 메서드 내가 구현해야함.

 

 

최종:

WebApplicationiInitializer를 구현하는 4가지 방법 

결론: 

Spring WebMVC 의 기본 구조 

 

79. Spring IoC컨테이너를 Root Context와 Servlet Context로 분리하기 

-ContextLoaderListener의 IoC 컨테이너의 역할 이해 

-DispatcherServlet의 IoC 컨테이너의 역할 이해 

- 설정하는 방법 

 

각각의 디스페쳐서블릿에 필요한 빈컨테이너에 저장해라. 컨테이너들이 공유하는 걸 webApplicationContext에 저장해서 한 번만 나오게 만드라 ~~

//AspectJ Weaver 라이브러리
implementation 'org.aspectj:aspectjweaver:1.9.20.1'
@Override
protected Class<?>[] getRootConfigClasses() {
  // ContextLoaderListener의 IoC컨테이너가 사용할 java config 클래스를 지정한다.
  //=> AppWebApplicationInitializer에서 RootConfig를 가지고 ContextLoaderListener를 만들었기 때문에
  // 여기서는 설정하지 않는다.  한 군데서 설정하면 다른 곳들에서는 할 필요 없다. 
  return null;
}

webAppliciationContext가 ioc 컨테이너임 = 빈 컨테이너 

루트가: 컨텍스트 로더 리스너가 관리하는 ioc 컨테이너임 

 

디서가 자신만의 각각 아이오씨컨테이너가 잇는데  루트를 공유함 

다 같은 그림임