由于业务需要,将一些json数据存放到了nacos配置中心上
①服务启动读取nacos进行数据初始化
@Slf4j
@Component
@Data
public class NacosJsonInitializeRunner implements ApplicationRunner{
//以下属性都是nacos相关的
@Value("${nacos.config.server-addr}")
private String NACOS_SERVER_ADDR;
@Value("${nacos.config.namespace}")
private String NACOS_NAMESPACE;
@Value("${nacos.config.username}")
private String USER_NAME;
@Value("${nacos.config.password}")
private String PASS_WORD;
@Value("${nacos.config.group}")
private String group;
@Override
public void run(ApplicationArguments args) throws Exception {
Properties properties = new Properties();
properties.setProperty("serverAddr", NACOS_SERVER_ADDR);
properties.setProperty("namespace", NACOS_NAMESPACE);
properties.setProperty("username", USER_NAME);
properties.setProperty("password", PASS_WORD);
ConfigService configService = ConfigFactory.createConfigService(properties);
//getConfigAndSignListener 方法主要是读取nacos文件以及注册内容变化的监听器
//第一个参数 是要读取的文件名称,第二个是组名称,
//第三个是超时时间,第四个是自定义的监听
//configInfo ==>读取到的文件内容
String configInfo = configService.getConfigAndSignListener("xxx.json", group, 0,new NacosJsonRefreshCallListener<Object>());
//TODO 获取的json内容自己进行处理
}
}
②自定义nacos监听
@Slf4j
@AllArgsConstructor
public class NacosJsonRefreshCallListener<T> implements Listener {
@Override
public Executor getExecutor() {
// TODO Auto-generated method stub
return null;
}
@Override
public void receiveConfigInfo(String configInfo) {
//监听到内容变化会走这里,configInfo就是文件内容
//TODO 自己的业务逻辑
}
}
至此结束!