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.propertieslà một phần của Environment. Tôi muốn sử dụng @PropertySourcecơ 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 Mapgì 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ó keySethoặc iteratorphươ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 Maphoặ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?