下载
从github上下载最新稳定版本编译后压缩包
下载地址:
https://github.com/alibaba/nacos/releases
启动
进入解压后的文件夹的bin目录下
输入启动命令:./startup.sh -m standalone
看到这个进程就说明启动好了
后台管理界面
现在在浏览器访问:
http://localhost:8848/nacos
默认用户名跟密码都是nacos
此时你就可以管理配置文件及查看注册的服务了
spring cloud结合nacos
配置管理
在pom中添加配置管理的依赖
由于我用的springboot2.x,所以引的包长这样,老版本的请移步官网求解
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
创建bootstrap.yml文件,并添加nacos的服务地址及应用名
spring:
application:
name: capture-bdc
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
此时可以在nacos中创建一个配置文件,配置文件的dataId的格式如下:
${prefix}-${spring.profile.active}.${file-extension}
1.prefix默认是bootstrap.yml中配置的应用名,当然也可以通过pring.cloud.nacos.config.prefix配置
2.spring.profile.active是当前环境对应的profile,可以通过spring.profiles.active指定
3.file-extension是配置文件数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置,目前只支持properties跟yml
通过spring的@Value注解就可以获取配置文件中的配置
Value("${useLocalCache:false}")
通过spring的@RefreshScope注解就可以实现配置自动更新
注册中心
在pom中添加服务发现的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
在bootstrap.yml文件中添加nacos服务注册中心地址
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication(exclude = {PageHelperAutoConfiguration.class,RestClientAutoConfiguration.class})
public class CaptureBdcApplication {
public static void main(String[] args) {
SpringApplication.run(CaptureBdcApplication.class,args);
}
}
此时启动应用,就可在nacos的服务管理列表中看到服务了
此时就可以在服务调用方用@EnableFeignClients开启扫描@FeignClient注解功能并调用注册的服务了
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication(exclude = PageHelperAutoConfiguration.class)
public class CaptureOscApplication {
public static void main(String[] args) {
SpringApplication.run(CaptureOscApplication.class,args);
}
}
服务暴露的接口
@FeignClient(value = "capture-bdc")
public interface BdcProductPublishQueryFeignApi {
@PostMapping(value = "/api/product/getBdcProductPublishVo")
BaseResultResponse<BdcProductPublishVo> getBdcProductPublishVo(@RequestParam("publishId") Integer publishId);
}
服务的具体实现:
@RestController
public class BdcProductPublishQueryFeignClient implements BdcProductPublishQueryFeignApi {
@Resource
private BdcProductPublishBaseService bdcProductPublishService;
@Override
@ApiOperation(httpMethod = "POST", value = "根据商品发布id获取商品发布信息")
public BaseResultResponse<BdcProductPublishVo> getBdcProductPublishVo(Integer publishId) {
BdcProductPublish publish = new BdcProductPublish();
publish.setId(publishId);
publish = bdcProductPublishService.selectByPrimaryKey(publish);
return BaseResultResponse.success(publish!=null?Collections.singletonList(publish):Collections.EMPTY_LIST);
}
}