- Я пытаюсь добиться перезагрузки файла свойств с помощью пружины MVC 3 без перезапуска сервера.
- И с помощью приведенного ниже кода я могу перезагрузить файл свойств, но если я получаю доступ к значению свойства по аннотации
@Value
я получаю старое значение, а если значение доступа использует env.getProperty("key")
, я получаю обновленное значение. Что может быть не так? - Вопрос:
PropertySource
и StandardEnvironment
содержат значения свойств отдельно в памяти?
@Configuration
@PropertySource(ignoreResourceNotFound = true, value = "classpath:static_resources.properties")
@RestController
@RequestMapping(value="/test")
public class RefreshEnvironmentPropertyController {
@Autowired protected StandardEnvironment environment;
@Value("${prop-test}") String propTest;
@RequestMapping(value = "refresh", method = RequestMethod.GET)
public String refreshProperty() throws IOException {
System.out.println("propTest\t"+ propTest);
System.out.println("env-propTest\t"+ environment.getProperty("prop-test"));
MutablePropertySources mutablePropertySources = environment.getPropertySources();
Properties properties = new Properties();
InputStream inputStream1 = new FileInputStream(new File(getClass().getResource("/static_resources.properties").getPath()));
InputStream inputStream = inputStream1;
properties.load(inputStream);
inputStream.close();
mutablePropertySources.replace("class path resource [static_resources.properties]",
new PropertiesPropertySource("class path resource [static_resources.properties]", properties));
System.out.println("propTest\t"+ propTest);
System.out.println("env-propTest\t"+ environment.getProperty("prop-test"));
return "refreshed";
}
}