Я пытаюсь читать из внешнего файла свойств со следующим кодом ниже. Я уверен, что у меня есть правильный путь, но я все еще получаю файл, который не найден. Какие-либо предложения? Вот мой код:
public class Timer {
@Autowired
private ApplicationContext ctx;
@Autowired
private SpringMailSender springMailSender;
@Scheduled(cron="${timer.time}") //this is the line that is having trouble
public void timer()
{
System.out.println("timer() in Timer Class has been stepped into");
try {
springMailSender.sendMail();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Method executed on every 2nd Monday of each month. Current time is :: "+ new Date());
}
}
И вот как я установил свой конфигурационный файл для него...
<!-- Property Placeholder -->
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:properties/system.properties</value>
<value>file:${external.property.directory}propfilename</value>
</list>
</property>
</bean>
<!-- messageSource -->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>file:${external.property.directory}propfilename</value>
</list>
</property>
</bean>
С моим внешним файловым путем, установленным таким образом в файле свойств в веб-приложении.
#directory on the server where property files will be stored
external.property.directory=C\:\\propfoldername\\
И ошибка, которую я получаю, такова:
org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: ${external.property.directory}propfilename (The system cannot find the file specified)
Любая помощь будет оценена по достоинству. Дайте мне знать, если я оставил код, который вам может понадобиться.
То, что вы пытаетесь сделать, не работает, потому что $ {external.property.directory} не устраняется. Вы можете добиться того же результата, но используя переменную среды, если вам нужны оба файла свойств (обратите внимание, что любые свойства во втором случае переопределяют одни и те же свойства из первого)
PropertyPlaceholderConfigurer
(для пружины требуетсяPropertyPlaceholderConfigurer
для обработки переменных${xxx}
)