部署Nacos环境:https://blog.csdn.net/shouchenchuan5253/article/details/107587983
创建一个springboot项目。
<dependency>
<groupId>com.alibaba.bootgroupId>
<artifactId>nacos-config-spring-boot-starterartifactId>
<version>0.2.3version>
dependency>
在application.yml文件中配置nacos服务地址及端口
server:
port: 8088
ip: 127.0.0.1
spring:
application:
name: nacos-service
# nacos配置内容
nacos:
config:
server-addr: 127.0.0.1:8848 # 配置 Nacos 配置 的地址
discovery:
server-addr: 127.0.0.1:8848 # 配置 Nacos 服务 的地址
在这之前可以提前在nacos服务里新增一个配置,这里我们新增的配置内容如下
import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
/**
* @author baldwin
*/
@Configuration
@NacosPropertySource(dataId = "TestConfig.yml",groupId = "yzstu", autoRefreshed = true) //加载 dataId 为 example 的配置源,并开启自动更新
public class NacosConfig {
@Value("${server.port}")
private int serverPort;
@Value("${server.ip}")
private String ip;
@Value("${spring.application.name}")
private String applicationName;
@NacosInjected
private NamingService namingService;
/**
* 开机自动注册服务
* @throws NacosException
*/
@PostConstruct
public void registerInstance() throws NacosException {
namingService.registerInstance(applicationName, ip, serverPort);
}
}
import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping(("/api/nacos"))
@Api(value = "Nacos服务相关接口")
public class NacosApi {
@NacosInjected
private NamingService namingService;
@NacosValue(value = "${site.ip:0.0.0.0}",autoRefreshed = true)
private String siteIp;
@NacosValue(value = "${site.name:null}",autoRefreshed = true)
private String siteName;
@ApiOperation(value = "获取网站信息")
@GetMapping(value = "/getSiteInfo")
public String getSiteInfo(){
return "MySite:"+siteName + ",ip:"+siteIp;
}
@ApiOperation(value = "获取所有实例信息")
@ApiImplicitParam(value = "serviceName",example = "nacos-service",required = true)
@GetMapping(value = "/getServiceInfo")
public List<Instance> getInstanceInfo(@RequestParam(value = "serviceName") String serviceName){
try {
return namingService.getAllInstances(serviceName) ;
} catch (Exception e){
e.printStackTrace();
}
return null ;
}
}
启动项目,在nacos-UI中进入服务列表,查看是否成功注册。
访问接口获取远程配置数据
访问接口获取实例信息
到这里基本上就完成了服务注册了
1.检查NacosPropertySource注解中的dataId和groupId是否与远程配置文件中一直
2.远程配置文件需要设置后缀
作为一个简单的服务注册流程,只要过程中细心一点,应该就没有什么大问题,主要注意的就是导包和注解的使用
项目地址:https://gitee.com/dikeywork/learn-springboot/tree/master/learn-nacos
系列文章地址:https://blog.csdn.net/shouchenchuan5253/category_10223260.html
我是Baldwin,一个25岁的程序员,致力于让学习变得更有趣,如果你也真正喜爱编程,真诚的希望与你交个朋友,一起在编程的海洋里徜徉!
往期好文:
用Python每天给女神发一句手机短信情话
MySQL优化之explain
Spring源码分析-MVC初始化
春风得意马蹄疾,一文看尽(JVM)虚拟机
造轮子的艺术
源码阅读技巧
Java注解详解
教你自建SpringBoot服务器
更多文章请点击