由于业务需要,将一些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;@Overridepublic 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 {@Overridepublic Executor getExecutor() {// TODO Auto-generated method stubreturn null;}@Overridepublic void receiveConfigInfo(String configInfo) {//监听到内容变化会走这里,configInfo就是文件内容//TODO 自己的业务逻辑}}
至此结束!