Mùa xuân có cơ chế tốt đẹp PropertyPlaceholderConfigurer để chèn các giá trị như timeouts, Url JDBC và vân vân vào Spring bean cho mục đích cấu hình. Có cách nào hợp lý để xử lý các giá trị cấu hình có thể thay đổi khi chạy không?Mùa xuân: làm thế nào để thực hiện cấu hình thuộc tính có thể thay đổi trong thời gian chạy trong suốt
CẬP NHẬT: Với Spring 3.1, có một cách hay để bao gồm các nguồn cấu hình không tĩnh chẳng hạn như cơ sở dữ liệu qua PropertySource s. Một số ApplicationContexts cung cấp một cơ chế làm mới về nguyên tắc có thể xử lý các giá trị cấu hình thay đổi. Tuy nhiên, nó dừng ứng dụng trước, sau đó tạo tất cả các bean mới và sau đó bắt đầu lại bối cảnh ứng dụng. Tuy nhiên, với mục đích của chúng tôi, tôi sẽ cần một cách để làm điều này một cách minh bạch, sao cho máy chủ xử lý chính xác các yêu cầu hiện đang chạy.
Một ý tưởng khác để thực hiện việc này sẽ là Phạm vi tùy chỉnh tạo đối tượng mới khi thay đổi cấu hình. Thật không may là ObjectFactory cung cấp cho Scope sử dụng định nghĩa bean đã được xử lý trước, sao cho các placeholders không được đọc một lần nữa từ cấu hình. Vì vậy, các đối tượng được tạo có cùng cấu hình. :-(
Có lẽ một cách để làm điều đó là sử dụng PropertyOverrideConfigurer http://stackoverflow.com/a/595201/21499, nhưng tôi nghĩ rằng cơ chế ghi đè thuộc tính khá khó xử khi sử dụng và dễ bị lỗi. –