2017-06-05 16 views
6

Tôi đã thấy phạm vi 'ứng dụng' trong blog sau. Có đúng không?Có phạm vi ứng dụng vào mùa xuân không?

http://www.concretepage.com/spring/spring-bean-scope-example-using-scope-annotation-and-xml-for-singleton-prototype-request-session-global-session-and-application-scope-with-scoped-proxy

Bởi vì, theo lướt của tôi, tôi đã biết mùa xuân có chỉ dưới 5 phạm vi. Nêu tôi sai vui long chân chỉnh tôi.

  1. Singleton
  2. Prototype
  3. Yêu cầu
  4. phiên
  5. toàn cầu phiên
+0

vì vậy những gì sẽ là sự khác biệt giữa phạm vi áp dụng và phạm vi singleton? –

Trả lời

9

Có một phần trên doc chính thức có liên quan đến phạm vi đậu:

Về cơ bản, họ xác định tiếp theo:

singleton (Mặc định) Phạm vi một định nghĩa bean đơn thành một cá thể đối tượng duy nhất trên mỗi thùng chứa Spring IoC.

nguyên mẫu Phạm vi một định nghĩa bean đơn cho bất kỳ số lượng đối tượng nào.

yêu cầu Phạm vi một định nghĩa bean đơn cho vòng đời của một yêu cầu HTTP đơn; nghĩa là, mỗi yêu cầu HTTP có thể hiện riêng của một bean được tạo ra từ phía sau của một định nghĩa bean đơn. Chỉ hợp lệ trong ngữ cảnh của Spring ApplicationContext nhận biết web.

phiên Phạm vi một định nghĩa bean đơn cho vòng đời của phiên HTTP. Chỉ hợp lệ trong ngữ cảnh của Spring ApplicationContext nhận biết web.

globalSession Phạm vi một định nghĩa bean đơn cho vòng đời của phiên HTTP toàn cầu. Thông thường chỉ có giá trị khi được sử dụng trong bối cảnh Portlet. Chỉ hợp lệ trong ngữ cảnh của Spring ApplicationContext nhận biết web.

ứng dụng Phạm vi một định nghĩa bean đơn cho vòng đời của ServletContext. Chỉ hợp lệ trong ngữ cảnh của Spring ApplicationContext nhận biết web.

websocket Phạm vi một định nghĩa bean đơn cho vòng đời của WebSocket.Chỉ hợp lệ trong ngữ cảnh của Spring ApplicationContext nhận biết web.


Hơn nữa, như mùa xuân 3,0 tồn tại phạm vi khác chủ đề phạm vi nhưng không được đăng ký theo mặc định, hơn nữa bạn thậm chí có thể tạo ra phạm vi của riêng bạn:

Tính đến mùa xuân 3.0, một sợi phạm vi có sẵn, nhưng không được đăng ký theo mặc định. Để biết thêm thông tin, hãy xem tài liệu cho SimpleThreadScope. Để biết hướng dẫn về cách đăng ký hoặc phạm vi tùy chỉnh khác, hãy xem phần có tên “Sử dụng phạm vi tùy chỉnh”.

Có một phần điều này giải thích làm thế nào để xác định phạm vi tùy chỉnh của bạn:


Tôn trọng để Application scope, họ định nghĩa nó như sau:

Hộp chứa Spring tạo một phiên bản mới của bean AppPreferences bằng cách sử dụng định nghĩa bean appPreferences một lần cho toàn bộ ứng dụng web . Nghĩa là, bean appPreferences được đặt ở mức ServletContext , được lưu trữ như một thuộc tính ServletContext thông thường.

Nó cũng giải thích sự khác biệt giữa một Spring bean singleton:

này có phần tương tự như một đậu mùa xuân singleton nhưng khác ở chỗ hai cách quan trọng: Đó là một singleton mỗi ServletContext, không mỗi mùa xuân 'ApplicationContext' (mà có thể có nhiều trong bất kỳ web nhất định ứng dụng), và nó thực sự tiếp xúc và do đó có thể nhìn thấy như một thuộc tính ServletContext

Vì vậy, trong trường hợp bạn đang tìm kiếm để sử dụng với XML:

<bean id="apps" class="com.App" scope="application"/> 

Hoặc chú thích:

@ApplicationScope 
@Component 
public class App { 
    // ... 
} 
Các vấn đề liên quan