2015-02-27 17 views
9

Tôi dự định sử dụng Khởi động mùa xuân cho bài tập của mình. Một ứng dụng máy chủ điển hình của nó với kết nối đến cơ sở dữ liệu. Tôi biết tôi có thể sử dụng Spring Configuration để làm cho các thuộc tính của tôi trở nên ngoại vi, ví dụ: chi tiết kết nối db. Nhưng tôi cũng có các thuộc tính động khác cần được cập nhật khi chạy. ví dụ. chân chèo/cờ tính năng. Một số tính năng nhất định của ứng dụng của tôi cần được kiểm soát động, ví dụ: tưởng tượng một tài sản như app.cool-feature.enable = true và sau đó sau một thời gian cùng tính năng sẽ được tắt bằng cách app.cool-feature.enable = falseLàm thế nào để cấu hình các thuộc tính động trong khi sử dụng khởi động mùa xuân?

gợi ý Bất kỳ những gì là thực hành tốt nhất xung quanh ingesting hành vi năng động như vậy tại thời gian chạy? Tôi có thể nghĩ đến tùy chọn sau để kích hoạt sự thay đổi ...

  • Gởi nhắn JMS để dụ máy chủ với sự thay đổi sở hữu trên
  • Gọi một endpoint API tiếp xúc về trường hợp máy chủ ví dụ POST http://myapp/admin/config/update { "config": { "app.cool-feature.enable": true} }

Tôi biết tôi có thể viết mã tùy chỉnh của riêng tôi thực hiện điều này (nó sẽ cho 3rd thời gian) nhưng chỉ cần tự hỏi nếu đã có cách chuẩn/phổ biến thực hành xung quanh cấu hình thuộc tính động mà tôi không biết. Ngoài ra nó sẽ là tuyệt vời nếu nó có thể làm việc với các giải pháp khác như Apache ZooKeeper, coreos vvd, Netflix curator vv và có tích hợp chặt chẽ với Spring.

Suy nghĩ?

Trả lời

2

Bạn có thể muốn có một cái nhìn tại Togglz: www.togglz.org

Từ trang chủ của họ:

Togglz là một thực hiện các tính năng Nhấn thả hình cho Java. Tính năng Toggles là một thực tiễn phát triển nhanh rất phổ biến trong bối cảnh triển khai và phân phối liên tục. Ý tưởng cơ bản là liên kết một chuyển đổi với mỗi tính năng mới mà bạn đang làm việc. Điều này cho phép bạn bật hoặc tắt các tính năng này khi chạy ứng dụng, ngay cả đối với người dùng cá nhân.

Togglz không bị ràng buộc vào khung lò xo nhưng hỗ trợ nó.

5

Nếu bạn đang sử dụng Khởi động mùa xuân, hãy xem @ConfigurationProperties. Bạn sẽ được yêu cầu cung cấp một Bean để truy cập các thuộc tính của bạn. Do đó các giá trị ban đầu của các thuộc tính có thể được thay đổi trong quá trình thực thi vì chúng là các thuộc tính thông thường của một bean.

Trong trường hợp của bạn ví dụ:

@Component 
@ConfigurationProperties 
public class JmsProperties { 

    private String url = "vm://localhost" (let's suppose you use ActiveMQ); 

    public String getUrl()... 
    public void setUrl(String value)... 

} 

Và sau đó tiêm đậu này trong bạn JMS nhắn nghe.

Tất nhiên nếu bạn sử dụng JMS và khởi động mùa xuân, với cấu hình tự động bạn đã có lớp Properties ...

3

yêu cầu của bạn là một use-case tốt cho "Mùa xuân Mây Config", nơi không chỉ bạn có thể có tất cả các bạn các cấu hình có vị trí trung tâm nhưng cũng có thể làm mới chúng một cách linh động và do đó có thể được ứng dụng tham chiếu của bạn chọn từ thời điểm tiếp theo.Tham khảo tiêu chuẩn này link mùa xuân cho cùng.

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