下载安装Nacos
下载地址:Nacos
下载后将这个.zip文件解压
windows系统双击运行startup.cmd
注意事项
一些较新的版本可能会启动时闪退,解决方法为记事本编辑startuo.cmd文件
修改set MODE = "standalone"
Nacos注册中心
- 引入依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><exclusions><!--较新版本的spring boot需要排除一些依赖--><exclusion><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></exclusion></exclusions></dependency><dependency><!--一些较新的版本需要引入这个版本做负载均衡--><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId><version>2.2.1.RELEASE</version></dependency>
- 使用
@EnableDiscoveryClient
注解开启服务注册与发现功能
@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")
//basePackages 指定了要扫描Feign客户端接口的包路径。
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {public static void main(String[] args) {SpringApplication.run(GulimallMemberApplication.class, args);}}
- 声明接口
/*** 这是一个声明式的远程调用*/ @FeignClient("gulimall-coupon") public interface CouponFeignService {@RequestMapping("/coupon/coupon/member/list")public R membercoupons();// 若调用接口的这个方法,它就会去注册中心找这个gulimall-coupon所在的位置,然后再去调用这个请求路径对应的方法 }
- 进行调用
@AutowiredCouponFeignService couponFeignService;@RequestMapping("/coupons")public R test(){MemberEntity memberEntity = new MemberEntity();memberEntity.setNickname("李四");R membercoupons = couponFeignService.membercoupons();return R.ok().put("member",memberEntity).put("coupons", membercoupons.get("coupons"));}
- application.yml中配置服务中心名称和地址,以及设置当前模块名字
spring:datasource:username: rootpassword: 123456url: jdbc:mysql://192.168.198.131:3306/gulimall_umsdriver-class-name: com.mysql.jdbc.Drivercloud:nacos:discovery:server-addr: 127.0.0.1:8848application:name: gulimall-membermybatis-plus:mapper-locations: classpath:/mapper/**/*.xmlglobal-config:db-config:id-type: auto server:port: 8000
Nacos配置中心
-
引入依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.0.0</version></dependency>
-
创建一个bootstrap.properties文件
-
在bootstrap.properties文件中添加配置
spring.application.name=gulimall-coupon spring.cloud.nacos.config.server-addr=127.0.0.1:8848
-
给配置中心添加一个叫数据集(Data Id) gulimall-coupon.properties
-
给应用名.properties添加配置
-
添加注解动态获取配置
@RefreshScope @RestController @RequestMapping("coupon/coupon") public class CouponController {@Autowiredprivate CouponService couponService;@Value("${coupon.user.name}")private String name;@Value("${coupon.user.age}")private Integer age;@RequestMapping("/test")public R test(){return R.ok().put("name",name).put("age",age);}@RequestMapping("/member/list")public R membercoupons(){CouponEntity couponEntity = new CouponEntity();couponEntity.setCouponName("满10减100");return R.ok().put("coupons",Arrays.asList(couponEntity));}
-
重启服务和nacos服务器
-
细节
* 1.命名空间:配置隔离 * 默认:public(保留空间);默认新增的所有配置都在public空间。 * A.开发,试,生产:利用命名空间来做环境隔离。注意:在bootstrap.properties; * 配置上,需要使用哪个命名空间下的配置,spring,cloud,nacos,config,namespace=9de62e44-cd2a-4a82-bf5c-95878bd5e871 * B.每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置 * 2.配置集 :所有的配置的集合 * 3.配置集ID:类似文件名 * Data ID: 类似文件名 * 4.配置分组: * 默认所有的配置集都属于: DEFAULT_GROUP; * 在pom.xml中选择分组 * spring.cloud.nacos.config.group=dev
* 5.同时加载多个配置集 * 1)、微服务任何配置信息,任何配置文件都可以放在配置中心中、只需要在bootstrap.properties说明加载配置中心中哪些配置文件即可 * 2)、@Value, @ConfigurationProperties * 3))以前springBoot任何方法从配置文件中获取值,都能使用 * 配置中心有的优先使用配置中心的值