복붙노트

[SPRING] Spring MVC의 컨텍스트 이해하기

SPRING

Spring MVC의 컨텍스트 이해하기

나는 봄에 익숙하지 않고 간단한 웹 응용 프로그램을 만들고 있습니다. Spring MVC에서 컨텍스트에 대해 읽었습니다.

Eclipse 용 STS 플러그인을 사용하고 있습니다. 나는 플러그인을 사용한 Spring MVC 프로젝트.

이제는 프로젝트에 web.xml, root-context.xml 및 servlet-context.xml이라는 세 개의 XML 문서가 있습니다. 이것들은 나를 위해 STS에 의해 만들어졌다.

왜 하나 이상의 디스패처 서블릿이 필요한가?

왜 사람은 하나 이상의 응용 컨텍스트를 필요로합니까?

생각? 코멘트? 수정? 모범 사례?

해결법

  1. ==============================

    1.이 디자인의 전체 개념은 일반적인 웹 애플리케이션에서 다른 아키텍처 계층을 처리하고 컨텍스트 전체에서 빈에 대한 상속 / 대체 메커니즘을 제공하는 것입니다. Spring의 각 컨텍스트 유형은 예를 들어 웹 레이어, 서비스 레이어 등의 다른 아키텍처 레이어와 관련됩니다.

    이 디자인의 전체 개념은 일반적인 웹 애플리케이션에서 다른 아키텍처 계층을 처리하고 컨텍스트 전체에서 빈에 대한 상속 / 대체 메커니즘을 제공하는 것입니다. Spring의 각 컨텍스트 유형은 예를 들어 웹 레이어, 서비스 레이어 등의 다른 아키텍처 레이어와 관련됩니다.

    Spring 기반의 웹 애플리케이션은 다중 디스패처 서블릿을 구성 할 수 있습니다 (대다수의 경우 단일 서블릿이지만 디스패처 serlvet은 서블릿이지만 web.xml에는 여러 개의 구성이있을 수 있음). 다른 URL 패턴을 처리하도록 구성 할 수 있습니다. 그래서 분명히 각각은 다른 서블릿이므로 다른 Spring 웹 애플리케이션 컨텍스트를 가질 수 있습니다. 이들 각각은 컨트롤러, 인터셉터, 뷰 리졸버 (resolver), 로케일 해석자 (locale resolvers) 등과 같은 Spring 웹 레이어에 대한 다양한 구성을 포함 할 수 있습니다. 일반적으로 애플리케이션의 웹 레이어에 속하기 때문입니다. 이러한 모든 구성과 Bean은 각 Dispatcher 서블릿에 개별적이므로 서로 볼 수는 없습니다. 따라서 별도의 스프링 웹 응용 프로그램 컨텍스트를 갖는 것이이 개인 정보를 사용 가능하게합니다. 그러나 공유되도록 고안된 다른 콩이 루트 컨텍스트에 속합니다. 따라서 공유 가능한 모든 것들은 루트 컨텍스트에 속하며이 웹 애플리케이션에서 전역 적으로 고려 될 수 있습니다.

    각 Dispatcher 서블릿은 루트 컨텍스트에 정의 된 모든 Bean을 상속받습니다. 그러나주의해야 할 중요한 점은 공유 된 bean은 각각의 Dispatcher Servlet 특정 bean에 의해 겹쳐 쓸 수 있다는 것입니다. 따라서 웹 응용 프로그램에서 루트 컨텍스트는 상속되지만 무시 될 수있는 것으로 볼 수 있습니다.

  2. ==============================

    2.스프링은 그런 방식으로 xml 파일을 갖도록 강요하지 않으며, servlet-context.xml이 될 하나의 XML 파일을 사용하고 dispatcher 서블릿 만 사용하여 모든 것을 잘 처리 할 수 ​​있습니다. 일반적으로 서비스 빈이나 DAO 빈을 정의하기 위해 서로 다른 파일이 있기 때문에 이것은 기본적으로 애플리케이션 디자인에 달려있다. 예를 들어 스프링 보안을 사용한다면 security-context.xml과 같은 XML 파일을 하나 더 추가 할 수있다. 내가 말했듯이 그것은 디자인에 달려있다. 컨텍스트 로더 수신기를 완전히 제거하고 디스패처 서블릿을 사용하여 모든 작업을 계속 관리 할 수 ​​있습니다. 귀하의 질문은 범위가 너무 넓습니다. 봄에 처음이기 때문에 스프링 용기에 대한 자세한 정보를 얻고 귀하의 요구 사항에 맞는 것을 결정해야 할 수도 있습니다. 나는 일반적으로 WEB-INF의 servlet-context.xml과 classpath의 service-context.xml과 같은 다른 설정을 가지고있다. 다시 말해서 이것이 내게 어울리는 엄격한 규칙은 아니다.

    스프링은 그런 방식으로 xml 파일을 갖도록 강요하지 않으며, servlet-context.xml이 될 하나의 XML 파일을 사용하고 dispatcher 서블릿 만 사용하여 모든 것을 잘 처리 할 수 ​​있습니다. 일반적으로 서비스 빈이나 DAO 빈을 정의하기 위해 서로 다른 파일이 있기 때문에 이것은 기본적으로 애플리케이션 디자인에 달려있다. 예를 들어 스프링 보안을 사용한다면 security-context.xml과 같은 XML 파일을 하나 더 추가 할 수있다. 내가 말했듯이 그것은 디자인에 달려있다. 컨텍스트 로더 수신기를 완전히 제거하고 디스패처 서블릿을 사용하여 모든 작업을 계속 관리 할 수 ​​있습니다. 귀하의 질문은 범위가 너무 넓습니다. 봄에 처음이기 때문에 스프링 용기에 대한 자세한 정보를 얻고 귀하의 요구 사항에 맞는 것을 결정해야 할 수도 있습니다. 나는 일반적으로 WEB-INF의 servlet-context.xml과 classpath의 service-context.xml과 같은 다른 설정을 가지고있다. 다시 말해서 이것이 내게 어울리는 엄격한 규칙은 아니다.

  3. from https://stackoverflow.com/questions/19619539/understanding-contexts-in-spring-mvc by cc-by-sa and MIT license