Potrzebuję ustawień rozwojowych i produkcyjnych dla naszego projektu wiosennego. Rozumiem, że możesz używać profili na wiosnę, ale to nie jest coś, co możemy zrobić.Wczytanie aplikacji spring.properties na podstawie definicji kontekstu servletu tomcat
Co chcę zrobić, to umieścić w środowisku programistycznym plik test-application.properties i na produkcji plik prod-application.properties. W definicji kontekstu tomcat wysłaliśmy:
<Context>
<context-param>
<param-name>properties_location</param-name>
<param-value>file:C:\Users\Bill\test-application.properties</param-value>
</context-param>
</Context>
Możemy zmienić wartość dla serwerów produkcyjnych. W config wiosny mamy coś takiego:
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="locations">
<list>
<value>${properties_location}</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="false" />
</bean>
Ale wciąż otrzymuję błędów takich jak:
org.springframework.beans.factory.BeanInitializationException: Czy nie załadować właściwości; wyjątek zagnieżdżonych jest java.io.FileNotFoundException: Nie można otworzyć ServletContext zasób [/ $ {properties_location}]
Wszelkie pomysły, jak rozwiązać?
Zrobiłem to samo, ale zapomniałem o ignoreResourceNotFound. Teraz działa. Dziękuję za odpowiedź! – checklist
Ponadto, ponieważ wskazano SYSTEM_PROPERTIES_MODE_OVERRIDE, wszelkie właściwości określone przez parametr -D w wywołaniu java zastąpią to, co znajduje się w pliku właściwości, dlatego pierwszeństwo ma "java -Duser.name = ted ...". W przypadku ignoreResourceNotFound pliki właściwości mogą być opcjonalnie nieobecne bez rzucania wyjątku. –