@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注解 必须在类上加上注解才能热更新