Bối cảnh ứng dụng Web Bối cảnh ứng dụng mở rộng được thiết kế để hoạt động với javax.servlet.ServletContext tiêu chuẩn để nó có thể giao tiếp với container.
public interface WebApplicationContext extends ApplicationContext {
ServletContext getServletContext();
}
Đậu, được khởi tạo trong WebApplicationContext cũng sẽ có thể sử dụng ServletContext nếu chúng triển khai giao diện ServletContextAware
package org.springframework.web.context;
public interface ServletContextAware extends Aware {
void setServletContext(ServletContext servletContext);
}
Có rất nhiều điều có thể thực hiện với cá thể ServletContext, ví dụ như truy cập tài nguyên WEB-INF (cấu hình xml và v.v.) bằng cách gọi phương thức getResourceAsStream (). Thông thường, tất cả các bối cảnh ứng dụng được xác định trong web.xml trong ứng dụng Spring của servlet là các bối cảnh Ứng dụng Web, điều này đi vào cả bối cảnh ứng dụng web gốc và bối cảnh ứng dụng của servlet.
Ngoài ra, tùy thuộc vào khả năng ngữ cảnh của ứng dụng web có thể khiến ứng dụng của bạn khó kiểm tra hơn một chút và bạn có thể cần sử dụng lớp MockServletContext để kiểm tra.
Sự khác biệt giữa bối cảnh servlet và root
Spring cho phép bạn xây dựng hệ thống phân cấp bối cảnh ứng dụng đa cấp, do đó, bean yêu cầu sẽ được tìm nạp từ bối cảnh cha nếu nó không có trong bối cảnh ứng dụng hiện tại. Trong các ứng dụng web như mặc định, có hai cấp độ phân cấp, bối cảnh root và servlet : .
Điều này cho phép bạn chạy một số dịch vụ dưới dạng singletons cho toàn bộ ứng dụng (Spring Security bean và các dịch vụ truy cập cơ sở dữ liệu cơ bản thường cư trú ở đây) và các dịch vụ khác như các dịch vụ riêng biệt trong các máy chủ tương ứng để tránh xung đột tên giữa các bean. Ví dụ, một bối cảnh servlet sẽ phục vụ các trang web và một bối cảnh khác sẽ triển khai một dịch vụ web không trạng thái.
Sự phân tách hai cấp này xuất hiện trong hộp khi bạn sử dụng các lớp spring servlet: để định cấu hình bối cảnh ứng dụng gốc, bạn nên sử dụng thẻ bối cảnh-param trong tệp webDB của bạn
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/root-context.xml
/WEB-INF/applicationContext-security.xml
</param-value>
</context-param>
(bối cảnh ứng dụng gốc được tạo bởi ContextLoaderListener , được khai báo trong tệp web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
) và thẻ servlet cho bối cảnh ứng dụng servlet
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>app-servlet.xml</param-value>
</init-param>
</servlet>
Xin lưu ý rằng nếu init-param sẽ bị bỏ qua, thì spring sẽ sử dụng myservlet-servlet.xml trong ví dụ này.
Xem thêm: Sự khác biệt giữa applicationContext.xml và spring-servlet.xml trong Spring Framework
web.xml
tệp; Câu hỏi này là hỏi về một số lớp học mùa xuân.