Является ли Spring @RefreshScope сломанным или я его неправильно использую?

hibernate-entitymanager введет jboss-logging как зависимость, но не является самой последней версией и не имеет этого метода. Похоже, вам не нужен jboss-logging, поэтому попробуйте исключить его:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>5.0.1.Final</version>
    <exclusions>
        <exclusion>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Или, если окажется, что вам нужно jboss-logging для спящего режима, затем добавьте более позднюю версию jboss-logging как дополнительная зависимость.

<dependency>
    <groupId>org.jboss.logging</groupId>
    <artifactId>jboss-logging</artifactId>
    <version>3.3.0.Final</version>
</dependency>
0
задан katiex7 14 July 2018 в 01:34
поделиться

1 ответ

Вы должны обновлять bean-компоненты, не пытаясь обновить все приложение, и все конфигурации> beans, которые он загружает.

Из документов Spring,

https: //cloud.spring.io/spring-cloud-static/docs/1.0.x/spring-cloud.html#_refresh_scope

@RefreshScope работает (технически) на @ Класс конфигурации, но это может привести к неожиданному поведению: например это не означает, что все @Beans, определенные в этом классе, сами являются @RefreshScope. В частности, все, что зависит от этих bean-компонентов, не может полагаться на то, что они обновляются при начале обновления, если только он не находится в @RefreshScope (в котором он будет перестроен при обновлении, а его зависимости будут повторно введены, и в этот момент они будут повторно инициализирован из обновленной @Configuration).

Что вам нужно сделать, это обновить компонент, куда вводится значение.

1
ответ дан Darren Forsythe 17 August 2018 в 12:03
поделиться
  • 1
    Извините, я забыл добавить, что я действительно положил @RefreshScope на мой компонент RestController, который не работал – katiex7 14 July 2018 в 01:32
  • 2
    Можете ли вы добавить класс, в котором вы пытаетесь обновить свойство, и конфигурацию? – Darren Forsythe 14 July 2018 в 01:33
  • 3
    Ладно, так ... по какой-то причине я просто заново запустил приложение, и он работает ... – katiex7 14 July 2018 в 01:37
  • 4
    Хорошо, глядя на мою историю, кажется, я мог бы прокомментировать RefreshScope на классе Controller и забыл протестировать ее после расторжения, так как было много других комментариев / комментариев без комментариев, пытаясь по-разному. Но спасибо, я соглашусь с этим как на решение, что класс Controller должен быть аннотирован с помощью RefreshScope – katiex7 14 July 2018 в 01:41
  • 5
    :) Легкая ошибка сделать – Darren Forsythe 14 July 2018 в 01:50
Другие вопросы по тегам:

Похожие вопросы: