2012-09-02 30 views
5

Ok Spring Gurus ... phá vỡ cái này xuống cho tôi. Trong khi đọc tài liệu về Spring MVC, tôi cam kết qua tuyên bố này:Spring DispatcherServlet Multiple Instances

".... Khuôn mẫu MVC, mỗi DispatcherServlet đều có WebApplicationContext riêng, kế thừa tất cả Các bean được thừa kế đã định nghĩa có thể được ghi đè trong phạm vi servlet-cụ thể, và các bean có phạm vi riêng mới có thể được định nghĩa cục bộ cho một cá thể servlet cụ thể. "

Spring Docs Reference

Tôi có một vài câu hỏi dựa trên này:

  1. Những tuyên bố ngụ ý rằng có thể có nhiều hơn một thể hiện của DispatcherServlet. Đó có phải là hoàn toàn không đúng bởi vì trong một ứng dụng web, chỉ có một thể hiện của một Servlet có thể (và lý tưởng nhất) nên tồn tại?
  2. Chính xác "phạm vi đặc thù của servlet" có ý nghĩa gì trong ngữ cảnh của tuyên bố trên?

Trả lời

2

Là không phải hoàn toàn không đúng sự thật

này dịch ra là "thỉnh thoảng đúng," mà tôi không nghĩ là những gì bạn có nghĩa là.

trong một ứng dụng web, chỉ có một thể hiện của một Servlet có thể (và nên lý tưởng) tồn tại

Đây không phải là hoàn toàn không chính xác - chỉ chủ yếu là không chính xác. Bạn đang bối rối phần tử <servlet> của bộ mô tả triển khai (web.xml) với lớp thực thi servlet đó.

Đúng là, ngoại trừ trong một số trường hợp giới hạn, vùng chứa chỉ được phép khởi tạo một phiên bản của lớp trên mỗi servlet. Tuy nhiên, bạn có thể có nhiều mục nhập <servlet> mà tất cả đều chỉ định cùng một lớp.

chính xác là gì "phạm vi servlet cụ thể" có nghĩa là trong bối cảnh các tuyên bố trên

Như một ví dụ không-rất-tốt (trên thực tế, tôi nghĩ rằng có vài ví dụ tốt): bạn có thể có một ứng dụng hỗ trợ nhiều máy khách, mỗi ứng dụng có các URL khác nhau và các cơ sở dữ liệu khác nhau, nhưng nếu không giống nhau. Bạn có thể xác định các đối tượng nghiệp vụ của mình trong cấu hình gốc và nguồn dữ liệu trong cấu hình ứng dụng web. Cũng như bất kỳ hạt cấu hình máy khách cụ thể nào.

+0

Tôi đã sửa lỗi của mình bằng 'không' như bạn đã chỉ ra ở trên, cảm ơn bạn. Dù sao, lời giải thích tốt đẹp. Tôi nghĩ điều đó rõ ràng rất nhiều. Tuy nhiên, tôi vẫn gãi đầu về lý do tại sao bạn muốn có nhiều servlet tương tự trong một ứng dụng web, chỉ để xử lý các yêu cầu được ánh xạ khác nhau. Tại sao không có các ứng dụng web khác nhau, mỗi ứng dụng có một đường dẫn ngữ cảnh khác nhau? Sẽ không phải là trường hợp trước đây (nhiều servlet tương tự trong một ứng dụng web để xử lý các url khác nhau) chỉ đơn giản là một công thức cho đau đầu nghiêm trọng? – mainas

Các vấn đề liên quan