2010-08-14 30 views
7

Chiến lược chung để xác định một nhóm đậu, được sử dụng khác nhau trong môi trường phát triển và sản xuất là gì?Các chiến lược chung khi xác định hạt đậu mùa xuân cho các môi trường khác nhau

Giả sử tôi có 2 hạt, mỗi hạt sẽ triển khai cùng một giao diện. Một bean phục vụ như là trừu tượng cho hệ thống tập tin cục bộ, cái kia kết nối với một hệ thống tập tin phân tán. Để giữ cho sự phát triển ổn định, càng tốt, môi trường phát triển nên sử dụng việc triển khai hệ thống tập tin cục bộ, bản phát hành sản xuất sử dụng bean hệ thống tập tin phân tán.

Hiện tại những gì tôi đang làm là có hai định nghĩa xml.

native.xml

<bean id="resourceSystem" class="com.cust.NativeResourceSystem" /> 

distributed.xml

<bean id="resourceSystem" class="com.cust.HadoopResourceSystem"> 
    <constructor-arg name="fs" ref="hdfs" /> 
</bean> 

Khi tạo bối cảnh ứng dụng tôi bỏ qua một trong hai native.xml hoặc distributed.xml tùy thuộc vào môi trường và lấy đậu resourceSystem.

Có công cụ hay thực hành tốt nhất nào trong Spring để định cấu hình định nghĩa bean cho các môi trường khác nhau không?

Cảm ơn.

Trả lời

10

Ở đây đi những gì tài liệu tham khảo Xuân nói về PropertyPlaceholderConfigurer

Các PropertyPlaceholderConfigurer không tìm kiếm bất động sản chỉ trong Properties tập tin bạn chỉ định, mà còn kiểm tra đối với các thuộc tính hệ thống Java nếu nó không thể tìm thấy một tài sản bạn đang cố gắng sử dụng.

Như bạn thấy ở trên, bạn có thể thiết lập một tài sản

hệ thống Java trên máy phát triển

-Dprofile=development 

On The máy sản xuất

-Dprofile=production 

Vì vậy, bạn có thể định nghĩa một cài đặt ngữ cảnh ứng dụng toàn cầu mà nhập mỗi ngữ cảnh phân lớp ettings như sau

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
          http://www.springframework.org/schema/context 
          http://www.springframework.org/schema/context/spring-context-2.5.xsd"> 
    <context:property-placeholder/> 
    <import resource="service-${profile}.xml"/> 
    <import resource="persistence-${profile}.xml"/> 
    <import resource="security-${profile}.xml"/> 
</beans> 

Hãy ghi nhớ tất cả các đường dẫn vị trí có liên quan đến các file định nghĩa làm nhập khẩu

Vì vậy, loại này cấu hình được hỗ trợ bởi Spring

Nói chung là thích hợp hơn để giữ một indirection cho các vị trí tuyệt đối như vậy, ví dụ, thông qua "$ {...}" giữ chỗ Điều đó được giải quyết chống lại các thuộc tính hệ thống JVM tại thời gian chạy.

+0

Cảm ơn, đây chính xác là chiến lược tôi đang tìm :) –

2

Đây là những gì tôi đã sử dụng trong nhiều dự án của mình. Có tất cả các hạt đậu độc lập trong môi trường của bạn nói common.xml và tất cả những người khác nói dev.xml/qa.xml/prod.xml. Nếu bạn đang sử dụng kiến ​​để xây dựng dự án của bạn, sau đó cung cấp môi trường như một đối số cho quá trình xây dựng và để cho tập lệnh xây dựng bao gồm env.xml thích hợp và bỏ qua những người khác. Ý tôi là, kịch bản xây dựng sẽ sao chép dev.xml dưới dạng env.xml nếu môi trường dev hoặc qa.xml của nó là env.xml nếu QA của nó. Vì vậy, mã tải các định nghĩa bean sẽ luôn sử dụng "common.xml, env.xml".

1

Chức năng này nằm trên radar của SpringSource và được dự kiến ​​phát hành trong tương lai.

Xem herehere.

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