To musi być jakiś głupi błąd, którego nie mogłem przejść. Próbuję przekazać na zewnątrz mój plik właściwości, obecnie umieszczony w moim domu użytkownika. Jestem ładowania pliku właściwości używając @PropertySource
takiego:Spring PropertyPlaceHolder Plik właściwości konfiguracji zewnętrznej Java
@Configuration
@PropertySources(value = { @PropertySource("file:#{systemProperties['user.home']}/.invoice/config.properties") })
public class PropertiesConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer propertiesPlaceHolderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
Ale niestety, że nie ładuje plik właściwości. Zgłasza FileNotFoundException
. Ale jeśli zmienię ścieżkę na:
@PropertySources(value = { @PropertySource("file:/home/rohit/.invoice/config.properties") })
działa poprawnie. I to jest droga, którą ścieżka wcześniejsza rozwiązuje. Zalogowałem się, aby zweryfikować. Wydaje mi się więc, że Spel nie jest oceniany w adnotacji @PropertySource
. Czy to ma działać w ten sposób?
Jeśli tak, to czy istnieje inny sposób odczytu pliku właściwości zewnętrznych, który znajduje się w /home/rohit
? Nie chcę dawać absolutnej ścieżki z oczywistych powodów. I chciałbym uniknąć rozszerzenia klasy PropertyPlaceHolderConfigurer
.
Inną opcją, którą próbowałem, było dodanie folderu /home/rohit/.invoice
do ścieżki klasy tomcat. Wygląda jednak na to, że Spring nie używa System Classpath do usuwania przyrostka classpath:
. Jakieś wskazówki na ten temat?
Wyrażenie nie działa, zamiast tego użyj 'file: $ {user.home} /. Invoice/config.properties'. –
@ M.Deinum Pozwól mi spróbować tego .. –
@ M.Deinum Ahaa !! Zadziałało :) Napisz to jako odpowiedź, więc mogę to zaakceptować :) –