2009-01-20 38 views
12

Trong Log4j, có một tính năng trong đó hệ thống có thể được khởi tạo để thực hiện một cấu hình và xem với một khoảng thời gian. Điều này cho phép hệ thống log4j tải lại các thuộc tính của nó bất cứ khi nào tệp thuộc tính bị thay đổi. Khung công tác Spring có cơ sở Observer Configuration như thế nào trong đó Configuration được nạp lại khi nó thay đổi. Cấu hình cần tải lại không phải là applicationContext.xml của Springs nhưng các tệp cấu hình khác được khởi tạo bằng cách sử dụng bean khởi tạo Spring. Tự động cấu hình lại reinitialization trong Spring

Trả lời

7

Tôi đã tìm thấy một tiện ích hoạt động tương tự như Log4J here. Về cơ bản nó là một phần mở rộng của PropertyPlaceholderConfigurer để tải lại các thuộc tính khi chúng thay đổi.

+1

Điều này đã được điều chỉnh tại https://github.com/Unicon/springframework-addons/wiki/Auto-reloading-properties-files – Vadzim

+0

@Vadzim link đã chết! Điều này có thể giúp chúng tôi trong trường hợp trên http://projects.spring.io/spring-cloud/spring-cloud.html – pramodc84

+1

@ pramodc84, các liên kết được cập nhật: http://maven-repository.com/artifact/net.unicon.springframework /springframework-addons/0.1, https://github.com/UniconLabs/springframework-addons/blob/master/src/main/java/net/unicon/springframework/addons/properties/ReloadingPropertyPlaceholderConfigurer.java, https: // github .com/knightliao/disconf/blob/chủ/disconf-client/src/chính/java/com/baidu/disconf/khách hàng/addons/thuộc tính/ReloadingPropertyPlaceholderConfigurer.java – Vadzim

4

AFAIK Spring không cung cấp tiện ích như vậy. Tuy nhiên, có một công cụ của bên thứ 3, JRebel cho phép bạn cập nhật toàn bộ ứng dụng web (bao gồm cả cấu hình Spring) mà không yêu cầu khởi động lại máy chủ.

Bản dùng thử miễn phí có sẵn và giá mua khá rẻ.

2

Tôi sẽ thận trọng hơn khi tải lại ngữ cảnh ứng dụng mùa xuân.

Bạn mong đợi điều gì sẽ xảy ra với đậu đơn? Nếu một đối tượng có một tham chiếu đến singleton bean, nó có nên được cập nhật không?

+0

Tôi không muốn tải lại ứng dụng springcontext.xml hoặc bất kỳ các hạt đậu xuân đã được nạp. Tôi sẽ thử giải pháp Phill Sacre được đăng tải. – zkarthik

1

Tôi phát triển bằng cách sử dụng JRebel và tôi sẽ rất cảnh giác với việc mong đợi nó làm mới cấu hình của bạn. Hoạt động tốt với Java, chứ không phải với Spring.

-1

Nếu bạn muốn thêm bối cảnh, tôi đã làm điều đó theo cách sau:

public class ApplicationContextUtil 
{ 
    static String[] configFiles = {"applicationContextParent.xml"}; 

    private static ApplicationContext context = null; 

    static 
    { 
     context = new ClassPathXmlApplicationContext (configFiles); 
    } 

    public static void addContext(String[] newConfigFiles) 
    { 
     // add the new context to the previous context 
     ApplicationContext newContext = new ClassPathXmlApplicationContext (newConfigFiles, context); 
     context = newContext; 
    } 
    public static ApplicationContext getApplicationContext() 
    { 
     // return the context 
     return context; 
    } 
} 

Đây là lớp nhà cung cấp ngữ cảnh của bạn. Để biết chi tiết, bạn có thể xem my blog

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