Używam adnotacji, aby skonfigurować moje środowisko wiosenne w następujący sposób:
@Configuration
...
@PropertySource("classpath:/config/default.properties")
...
public class GeneralApplicationConfiguration implements WebApplicationInitializer
{
@Autowired
Environment env;
}
Prowadzi to do tego, że moje właściwości default.propertiessą częścią Environment. Chcę @PropertySourcetutaj użyć mechanizmu, ponieważ zapewnia on już możliwość przeciążania właściwości przez kilka warstw rezerwowych i różne dynamiczne lokalizacje, w oparciu o ustawienia środowiska (np. Lokalizacja config_dir). Po prostu usunąłem rezerwę, aby ułatwić przykład.
Jednak moim problemem jest teraz to, że chcę skonfigurować na przykład właściwości mojego źródła danych w default.properties. Możesz przekazać ustawienia do źródła danych, nie wiedząc szczegółowo, jakich ustawień oczekuje źródło danych
Properties p = ...
datasource.setProperties(p);
Problem polega jednak na tym, że Environmentprzedmiot nie jest ani Propertiesprzedmiotem, Mapani niczym porównywalnym. Z mojego punktu widzenia jest to po prostu niemożliwe, aby uzyskać dostęp do wszystkich walorów środowiska, ponieważ nie ma keySetani iteratormetoda lub coś porównywalne.
Properties p <=== Environment env?
Czy coś mi brakuje? Czy można w Environmentjakiś sposób uzyskać dostęp do wszystkich wpisów obiektu? Jeśli tak, mógłbym zmapować wpisy do obiektu Maplub Propertiesobiektu, mógłbym nawet filtrować lub mapować je według prefiksu - tworzyć podzbiory jako standardowe java Map... To właśnie chciałbym zrobić. Jakieś sugestie?