@RefreshScope 结合nacos实现配置热更新实验

实体类


@Component
public class PatientInstances {
    @Bean(value = "patientWithRefreshScope")
    @ConfigurationProperties(prefix = "patientWithRefreshScope")
    @RefreshScope
    private PatientDTO patientWithRefreshScope(){
        PatientDTO patientDTO = new PatientDTO();
        return patientDTO;
    }

    @Bean(value = "patient")
    @ConfigurationProperties(prefix = "patient")
    private PatientDTO patient(){
        PatientDTO patientDTO = new PatientDTO();
        return patientDTO;
    }
}

带注解 @RefreshScope


@RestController
@RequestMapping("/scope")
@Component
@RefreshScope
public class testScopeController {

    @Autowired
    @Qualifier("patientWithRefreshScope")
    private PatientDTO patientWithRefreshScope;
    @Autowired
    @Qualifier("patient")
    private PatientDTO patient;

    @Value("${scopeValue}")
    private String scopeValue;




    @GetMapping("/test")
    public result test(){
        return result.builder().value(scopeValue).patientName(patient.getPatientName()).refreshScopeName(patientWithRefreshScope.getPatientName()).build();
    }


}
@Data
@Builder
class result{
    private String value;
    private String refreshScopeName;
    private String patientName;
}

不带注解

@RestController
@RequestMapping("/noscope")
@Component
public class testController {
    @Value("${value}")
    private String value;

    @GetMapping("/test")
    public String test(){
        return value;
    }


}

试验结果:实体类是否注解都能热更新
@Value注解 必须在类上加上注解才能热更新

上一篇:@RefreshScope


下一篇:Nacos 动态刷新@RefreshScope