Nacos动态更改配置后导致定时任务不执行

说明: nacos服务版本:1.4.1 问题: 在定时器类中使用nacos注解动态刷新,变更配置中心的配置后,项目监听到了变更,但是会使定时器无法执行的问题。 解决方案: nacos动态配置的数据统一放到一个类中,在更新nacos配置后,配置类会出现懒加载,即访问时才加载,如果将变更的变量放到定时器类中,那么定时器就会懒加载,导致定时器无法执行! import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.context.annotation.Configuration; /** * nacos统一动态配置类 * @author tyg * @date 2021-04-15 15:57 */ @RefreshScope @Configuration public class DynamicConfig { @Value("${demo.number:10}") public Integer number; public Integer getNumber(){ return this.number; } } 3. 定时器中调用示例: import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.Date; /** * 定时器demo * @author tyg * @date 2021-04-15 9:50 */ @Component public class DemoTask { @Resource private DynamicConfig dynamicConfig; @Scheduled(fixedDelay = 5000) public void run(){ System.out.println(new SimpleDateFormat("HH:mm:ss").format(new Date()) + " demo.number=" + dynamicConfig.getNumber()); } } ———————————————— 版权声明:本文为CSDN博主「朝如青丝·暮成雪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_26365837/article/details/115767907 ...

2024-11-29 · 1 min · airocld

@Value注解不能给静态变量直接赋值

平时使用直接在变量上加@Value注解就可以从配置文件中取到值 @Value("${tencent.totalNum}") private String totalNum; 但是当url被static修饰之后,就赋不了值。 @Value("${tencent.totalNum}") private static String totalNum; 这里是因为SpringBoot不允许/不支持把值注入到静态变量中,但是也给出了解决的方案. 3.把@Value("${tencent.totalNum}")放在静态变量的set方法上面即可,需要注意的是set方法要去掉static,有些朋友习惯性的快捷键生成set方法而没有去掉static,导致还是赋值失败。还有就是当前类要交给Spring来管理,即使用@Component及衍生注解。 private static String totalNum; // 记得去掉static @Value("${tencent.totalNum}") public void setTotalNum(String totalNum) { SyncDeviceNumUtil.totalNum= totalNum; }

2024-11-29 · 1 min · aircold