Tôi đang sử dụng chú thích để định cấu hình môi trường mùa xuân của mình như sau:
@Configuration
...
@PropertySource("classpath:/config/default.properties")
...
public class GeneralApplicationConfiguration implements WebApplicationInitializer
{
@Autowired
Environment env;
}
Điều này dẫn đến tài sản của tôi default.properties
là một phần của Environment
. Tôi muốn sử dụng @PropertySource
cơ chế ở đây, vì nó đã cung cấp khả năng nạp chồng các thuộc tính thông qua một số lớp dự phòng và các vị trí động khác nhau, dựa trên cài đặt môi trường (ví dụ: vị trí config_dir). Tôi chỉ loại bỏ dự phòng để làm cho ví dụ dễ dàng hơn.
Tuy nhiên, vấn đề của tôi bây giờ là tôi muốn định cấu hình ví dụ như các thuộc tính nguồn dữ liệu của tôi trong default.properties
. Bạn có thể chuyển các cài đặt đến nguồn dữ liệu mà không cần biết chi tiết những cài đặt mà nguồn dữ liệu mong đợi sẽ sử dụng
Properties p = ...
datasource.setProperties(p);
Tuy nhiên, vấn đề là, Environment
đối tượng không phải là Properties
đối tượng, cũng không phải là cái Map
gì có thể so sánh được. Theo quan điểm của tôi, đơn giản là không thể truy cập tất cả các giá trị của môi trường, bởi vì không có keySet
hoặc iterator
phương pháp hoặc bất cứ thứ gì có thể so sánh được.
Properties p <=== Environment env?
Tui bỏ lỡ điều gì vậy? Có thể truy cập tất cả các mục của Environment
đối tượng bằng cách nào đó không? Nếu có, tôi có thể ánh xạ các mục nhập thành một Map
hoặc Properties
đối tượng, thậm chí tôi có thể lọc hoặc ánh xạ chúng bằng tiền tố - tạo các tập hợp con như một java tiêu chuẩn Map
... Đây là điều tôi muốn làm. Bất kỳ đề xuất?