Về mặt thiết kế hệ thống, bất kỳ Ngữ cảnh nào cũng là tập hợp các chức năng và dữ liệu phổ biến được xác định ở một nơi, nhưng phải được sử dụng từ bất kỳ đâu trong chương trình. Và mục đích chính của Bối cảnh - giảm số lượng phụ thuộc giữa các thành phần của ứng dụng. Một mục đích khác của Ngữ cảnh - giúp đơn giản hóa quyền truy cập vào chức năng và dữ liệu phổ biến. Cho phép xem xét ngữ cảnh mà bạn đã liệt kê trong câu hỏi của mình.
ServletContext
ServletContext
là một phần của Servlet technology. Nhiều khung công tác dựa trên công nghệ này (JSF, Spring, Struts và nhiều hơn nữa). ServletContext
chứa chức năng giao tiếp với vùng chứa Servlet của nó (như Tomcat, Glassfish vv). Những điều cơ bản mà ServletContext
cung cấp:
- nhận đơn đăng ký Tham số ban đầu;
- nhận thông tin về việc gửi yêu cầu;
- thêm hoặc xóa Servlets, Bộ lọc và Trình nghe;
- lấy hoặc đặt thuộc tính của vùng chứa;
- thông báo thời gian chạy nhật ký;
- nhận được thêm thông tin như con đường ứng dụng, phiên bản container, vv
Như bạn thấy chỉ có chức năng cơ bản, có thể hữu ích bất cứ nơi nào trong ứng dụng, nếu bạn sẽ làm việc với công nghệ Servlet (ví dụ, phát triển khác một mvc-framework dựa trên nó).
ApplicationContext
ApplicationContext
là giao diện chính của ứng dụng Spring framework. Nó có rất nhiều triển khai. Một trong số họ tải cấu hình từ tệp xml (ClassPathXmlApplicationContext), một cấu hình khác tải cấu hình dựa trên chú thích (AnnotationConfigApplicationContext) và cứ tiếp tục như vậy.Những điều cơ bản mà ApplicationContext
cung cấp:
- nhà máy đậu, khả năng tạo hạt mới dựa trên định nghĩa bean;
- tải tài nguyên từ các nguồn khác nhau (hệ thống tệp, tệp jar, url v.v.);
- khả năng xuất bản và nghe sự kiện;
- giải quyết thư từ các gói thư;
Một lần nữa, được khởi tạo khi bắt đầu, chức năng cơ bản này có thể hữu ích ở hầu hết mọi nơi trong ứng dụng của bạn. Đó là lý do tại sao nó được thu thập theo ngữ cảnh. Nhiều lớp được sử dụng trong nền, để cung cấp khả năng này, nhưng tất cả những gì bạn phải biết, để sử dụng chức năng này - chỉ cần ApplicationContext
.
SecurityContext
SecurityContext
cung cấp quyền truy cập vào dữ liệu xác thực. Bạn có thể lấy tên của người dùng, vai trò và các chi tiết khác được xác thực. Thông tin này được mô-đun bảo mật khởi tạo, có thể cần thiết ở nhiều nơi. Сomponents, sử dụng thông tin này không biết gì về các lớp học của mô-đun bảo mật. Họ chỉ nhận được tất cả thông tin cần thiết từ SecurityContext
.
Nguồn
2016-03-11 16:29:44
theo đúng ứng dụng mùa xuân dựa trên web cũng chạy trên đầu trang của servlet phải không? Vì vậy, nếu tôi nói "root" context -> "servlet" context -> "spring" context nó có đúng không? – Harshana
Ngữ cảnh gốc là "bối cảnh cơ sở" để bối cảnh Servlet kế thừa từ ngữ cảnh gốc, vì nó là con. Hãy nghĩ về nó như thế này ... bạn làm cho bối cảnh gốc với mọi thứ mà ứng dụng cần (dịch vụ, vv), nhưng ngữ cảnh servlet chỉ instantiates "những thứ" nó cần phải là servlet. Hãy nhớ rằng, bạn có thể có nhiều servlet cho mỗi vùng chứa và tất cả chúng có thể chia sẻ "ngữ cảnh ứng dụng gốc", đây là chìa khóa để hiểu cách tất cả điều này phù hợp với nhau. – dkanejs
ok cảm ơn. khi nói đến servlet và bối cảnh mùa xuân, nếu tôi nói bối cảnh servlet là cha mẹ của bối cảnh mùa xuân hoặc là mối quan hệ anh chị em? Ngoài ra mùa xuân có thể truy cập vào bối cảnh servlet nhưng không phải ngược lại? Đúng không? – Harshana