Spring MVC 3 - Обновить файл свойств с помощью стандартной среды и источника свойств - PullRequest
0 голосов
/ 20 февраля 2020
  1. Я пытаюсь добиться перезагрузки файла свойств с помощью пружины MVC 3 без перезапуска сервера.
  2. И с помощью приведенного ниже кода я могу перезагрузить файл свойств, но если я получаю доступ к значению свойства по аннотации @Value я получаю старое значение, а если значение доступа использует env.getProperty("key"), я получаю обновленное значение. Что может быть не так?
  3. Вопрос: 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";
        }   

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...