当前位置: 首页 > 知识库问答 >
问题:

spring boot,无法使用spring cloud config在运行时更改属性值,@RefreshScope不起作用

卫甫
2023-03-14

我正在使用spring cloud config在运行时更改属性值,而无需重新启动应用程序。

我有一个回购协议,它有不同的配置文件,根据配置文件,我有多个应用程序运行一个回购协议。

我有一个带有@Profile注释的服务类,

@Service
@Slf4j
@Profile("change-feed")
@RefreshScope
public class ProcessorFeedService extends ProcessorService {

private final boolean toggle;
private final FeedPublisher publisher;

public ProcessorFeedService(FeedPublisher publisher,
                                           @Value("${feed.toggle}") boolean toggle) {
    this.publisher = publisher;
    this.toggle = toggle;
}

public void handler(List<JsonNode> docs) {
    for (JsonNode document : docs) {
        try {
            if (toggle) {
                // do something
                publisher.publish();
            } else {
                // do something else
                inventoryChangePublisher.publish(document);
            }
        } catch (Exception ex) {
            log.error("Exception occurred while processing {}", document.toString(), ex);
        }
    }
   }
  }

我有一个应用程序更改提要属性文件和一个应用程序测试文件,其中(应用程序测试)在云配置存储库中有这个feed.toggle属性值。

application.properties文件有这些属性来启用刷新endpoint和所有

management.endpoints.web.exposure.include=info,health,env,refresh,bindings
management.endpoint.health.show-details=always
management.health.binders.enabled=true
spring.profiles.active=test
spring.profiles.include=change-feed

更改云配置文件中的属性值后,点击此刷新endpoint,返回更改的属性。但它并不反映应用程序中的更新值。应用程序只选择旧的。

我做错了什么?

共有1个答案

苏宾鸿
2023-03-14

刷新范围通常适用于用@Configuration注释的类

来自spring文档

Spring文档

 类似资料:
  • 问题内容: 我需要在运行时在应用程序中更改属性。例如,我有一项服务,该服务发送带有重置密码的电子邮件。要求有效期为12小时。但是我想在运行时将此时间更改为24或更多。我需要给管理员执行此操作的机会。 我的财产文件有 我的服务 我的Spring xml配置 我可以在运行时以某种方式更改此值吗? 问题答案: 只需远离xml配置,就快要到2017年了。 使用@Value,您将从属性文件中获取hours.

  • 我已经尝试使用Config Server实现spring外部配置。当应用程序启动时,它第一次工作得很好,但对属性文件的任何更改都不会反映出来。我试图使用/refreshendpoint来动态刷新我的属性,但它似乎不起作用。在这方面的任何帮助都将是非常有帮助的。 我尝试向localhost:8080/refresh发帖,但得到404错误响应。 下面是我的应用程序类的代码 和bootstrap.pro

  • 问题内容: 我们在模型pojos中的一些方法已被注释为: columnDefinition 属性取决于数据库供应商,因此在尝试使用Hibernate删除HSQLDB中的架构时会失败: 为了解决这个问题,我正在考虑这个解决方案(但不想花时间,如果不可能的话),在运行时,为每个方法列加注: 获取@Column批注 创建列注释的副本,使用javaassist将columnDefinition设置为nul

  • 我正在编写一个桌面Spring Boot和数据JPA应用程序 初始设置来自应用程序。属性(一些spring.datasource.和spring.jpa.) 我的程序的一个功能是可以通过ui指定数据库设置(rdbms类型、主机、端口、用户名、密码等)<这就是为什么我想在运行时重新定义已经初始化的db属性。这就是为什么我正在寻找一种方法来做到这一点。 我试着做以下事情: 1)我编写了自定义DbCon

  • 问题内容: 我正在编写一个API解析Twitter机器人,对OOP来说是个新手。我有一些依赖于全局变量的现有Python代码,并认为我可以借此机会学习。 我有以下Team类,这些类在解析API时会更新,并且希望在类属性更改时能够调用完全不相关的(外部)方法。 对于现有实例,何时更改,我希望调用以下方法(伪代码): 两件事情 - 一旦检测到属性已更改,如何从班级内部调用? 我可以从任何地方访问对象的

  • 我正在尝试使用LayoutTransition动画,但它们不起作用。 我设置 在我的activity布局中的父级LinearLayout中。然后,在选中或未选中另一个复选框时,对包含一些复选框的子LinearLayout执行setVisibility(View.Visible)或setVisibility(View.Gone)。可见性更改不是动画的。父级LinearLayout中有一个Scroll