##github上地址:nacos官方文档
##一、启动nacos服务器-- windown10
###1、第一个异常:db.num is null
(1)打开 带的sql 注入本地 mysql
(2)配置 application.properties
###2、第二个异常:Unable to start embedded Tomcat
(3)配置 startup.cmd,改为单机模式,standalone
###3、启动
##二、nacos 服务注册/发现
###1、先统一定义版本号
<!--版本统一定义-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--这是一个工具模块,经常会跳回 1.5-->
<!--锁定为1.8 防止jdk自动跳回 5-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
###2、引入依赖
<!--nacos 服务注册/发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
###3、配置yml文件:在模块中添加配置(注册到nacos中)
spring:
application:
name: gulimall-coupon #定义注册时候的名字
datasource:
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
url: jdbc:mysql://192.168.56.10:3306/gulimall_sms
cloud:
nacos:
discovery:
server-addr: 39.106.88.67:8848 #注册到哪里(nacos地址)
###4、编写一个用于被远程调用的测试接口(优惠券模块中)
// 创建一个用于测试的优惠券远程调用接口
@RequestMapping("/member/list")
public R memberconpons(){
// 创建一个优惠券对象
CouponEntity couponEntity = new CouponEntity ( );
couponEntity.setCouponName ("满100减10");
return R.ok ().put ("coupons",Arrays.asList (couponEntity));
}
###5、编写一个远程调用的接口(会员模块中)
package com.kk.gulimall.member.feign;
import com.kk.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
// 这是一个声明式的远程调用
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
// 测试
@RequestMapping("/coupon/coupon/member/list")
R memberconpons();
}
###6、启动器指定扫描的远程调用接口包(会员模块中)
/**
* 调用远程服务需知:
* 1、引入open-feign
* 2、编写一个接口,告诉SpringCloud这个接口需要调用远程服务
* 声明接口的每个方法 调用了哪个远程服务的哪个请求
* 3、开启远程调用功能
*/
@EnableFeignClients("com.kk.gulimall.member.feign")
@SpringBootApplication
@EnableDiscoveryClient
public class GulimallMemberApplication {
public static void main(String[] args) {
SpringApplication.run (GulimallMemberApplication.class, args);
}
}
###7、注入,测试远程接口(会员模块中)
// 注入远程服务接口
@Resource
private CouponFeignService couponFeignService;
// 测试远程调用的接口
@RequestMapping("/coupons")
public R test(){
// 创建会员实体
MemberEntity memberEntity = new MemberEntity ( );
memberEntity.setNickname ("张三");
R memberconpons = couponFeignService.memberconpons ( );
return R.ok ().put ("member",memberEntity).put ("coupons",memberconpons.get ("coupons"));
}
##三、使用nacos作为配置中心统一管理配置
###1、引入依赖
<!--nacos 配置中心做配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
###2、创建一个配置文件 bootstrap.properties,填写模块名,和nacos地址
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=39.106.88.67:8848
###3、添加 nacos 管理配置中心注解
@RefreshScope // 动态获取并刷新配置
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
###4、编写测试属性和接口
@Value ("${coupon.user.name}") // 获取到配置
private String name;
@Value ("${coupon.user.pass}")
private Integer pass;
// 用户测试nacos配置中心管理
@RequestMapping("/test")
public R test(){
return R.ok ().put ("name",name).put ("pass",pass);
}
###5、重启微服务,并且在 nacos 上面配置及测试
添加配置:
修改配置:
测试:
##四、