2012-03-12 38 views
22

Tôi có sự hiểu biết rõ ràng về các phạm vi khác nhau của hạt đậu mùa xuân. Nhưng tôi đang tìm một số trường hợp sử dụng phạm vi nguyên mẫu của một bean trong các dự án cấp doanh nghiệp. Sẽ thật tuyệt nếu bạn có thể chia sẻ một số trường hợp sử dụng thực tế của phạm vi nguyên mẫu (không phải là phạm vi yêu cầu).Phạm vi nguyên mẫu mùa xuân - Trường hợp sử dụng?

+0

Tôi ngạc nhiên về câu hỏi ngắn này không có mã trong đó, chưa được đánh dấu là không mang tính xây dựng, quá rộng.không hiểu sai, tôi nghĩ câu hỏi này là tuyệt vời –

Trả lời

4

Tôi đã sử dụng nguyên mẫu chủ yếu kết hợp với mùa xuân lookup-method. Ứng dụng của tôi là game server cần giải mã byte đến tại cổng tcp. Hãy xem xét các định nghĩa bean sau

<bean id="channelBufferProtocol" class="org.menacheri.protocols.impl.ChannelBufferProtocol"> 
    <lookup-method name="createLengthBasedFrameDecoder" bean="lengthFieldBasedFrameDecoder"/> 
    <property name="eventDecoder" ref="eventDecoder"></property> 
    <property name="lengthFieldPrepender" ref="lengthFieldPrepender"></property> 
    <property name="eventEncoder" ref="eventEncoder"></property> 
</bean> 

Bên trong lớp thực hiện giao thức, tôi có đoạn mã sau để tạo ra các bộ giải mã khung pipeline.addLast("lengthDecoder", createLengthBasedFrameDecoder()); Khi phương pháp này được gọi, mùa xuân sẽ tạo ra một trường hợp khung giải mã mới và gửi lại.

Đậu được trả về bean="lengthFieldBasedFrameDecoder" cần nằm trong phạm vi prototype, vì đó là hạt đậu trạng thái trong ứng dụng của tôi.

Lưu ý: Giao thức không là gì ngoài một bộ giải mã và bộ mã hóa cụ thể được xích lại với nhau. "Chuỗi trách nhiệm" mẫu thiết kế.

+0

Phương pháp tra cứu này được giải thích bởi Spring doc: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans. html # beans-factory-method-injection –

5

Tôi đã sử dụng hạt mẫu để khai báo các phần tử biểu mẫu đã định cấu hình (ví dụ: hộp văn bản được định cấu hình để xác thực tên, địa chỉ email) và nhận các phiên bản "sống" của chúng cho mọi biểu mẫu được tạo trong webapp của tôi. Các chi tiết không quan trọng, chỉ có nguyên tắc, rằng tôi sẽ tóm tắt như sau:

  • Có một lớp học có nhiều thông số cấu hình
  • Bạn cần phải tạo trường hợp của nó với một tập hợp các cấu hình được xác định trước (fancy1 , fancy2, stc.)
  • Hãy suy nghĩ về những applicationContext.getBean("myBeanConfiguredFancy1") như một loại của phương pháp nhà máy tạo ra các ví dụ như cấu hình sẵn trong xml
0

Chúng ta có thể sử dụng phạm vi nguyên mẫu trong trường hợp của các lớp mô hình (cũng ca lled as Entities in hibernate) vì ứng dụng cần các instance khác nhau của class model cho mỗi thread/request.

+0

Sau đó, nó không nên được yêu cầu scoped thay vì nguyên mẫu scoped? –

2

Là người trước đây đã làm việc tại SpringSource và đã nói chuyện với các nhà phát triển về chủ đề này. Đây là việc của tôi. Nguyên mẫu là rất tốt để thử nghiệm những điều trên, do đó nguyên mẫu tên và không createnew hoặc một cái gì đó mô tả thêm về việc tạo ra một trường hợp mới của đậu mỗi và mỗi khi bạn yêu cầu nó từ container Spring.

Tôi cũng tìm thấy trong sử dụng của mình trong những năm mà tôi không thể làm bất kỳ nơi nào khác mà nguyên mẫu có ý nghĩa trong bất kỳ ứng dụng sản xuất thực tế nào. Nếu đối tượng của bạn giữ trạng thái, nó thường không phải là một bean Spring. Tôi đã tìm thấy trong tất cả các ứng dụng mà tôi đã làm việc trên tất cả các bean là Services, Repositories và Singleton không chứa các đối tượng mà tôi cần thêm các tính năng như Transactionality, JPA, JMS và các tính năng thích hợp cho chúng ta các tính năng của doanh nghiệp mà POJOs don ' t có.

Các đối tượng trong hệ thống giữ trạng thái của tôi là Thực thể của tôi và Xem DTO có thể hoặc những thứ khác không có ý nghĩa là Spring Bean. Vì vậy, do đó trong các ứng dụng của tôi trong sản xuất không có một "nguyên mẫu" đậu.

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