SpringCloud-Alibaba_NACOS_FEIGN_GATEWAY入门

SpringCloud-Alibaba

介绍: github_链接
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

Nacos做注册中心

1.创建分布式项目
2.在common服务项目中添加 springcloud-alibba依赖管理
<dependencyManagement>
 <dependencies>
   <dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
3.版本管理
由于 Spring Boot 1 和 Spring Boot 2 在 Actuator 模块的接口和注解有很大的变更,且 spring-cloud-commons 从 1.x.x 版本升级到 2.0.0 版本也有较大的变更,因此我们采取跟 SpringBoot 版本号一致的版本:
1.5.x 版本适用于 Spring Boot 1.5.x
2.0.x 版本适用于 Spring Boot 2.0.x
2.1.x 版本适用于 Spring Boot 2.1.x
3.引入nacos的服务注册发现依赖
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
 </dependency>
 在项目的application.properties文件中添加并在项目启动类添加@EnableDiscoveryClient
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
接下来启动nacos Server 服务

nacos下载地址: github下载
启动nacos后访问:http://127.0.0.1:8848/nacos/index.html
用户名密码都是nacos
登陆成功后点击服务列表即可查看注册的服务

Feign

        IDE创建项目时选择spring初始化,选择版本后勾选OPEN-FEIGN选项,添加远程调用的maven依赖.
        第一步,在调用远程服务的项目中创建feign包,自定义类
        第二步,创建成功后将被调用服务的方法签名粘贴至自定义类中
        第三步,为自定义类添加@FeignClient("nacos中的服务名")
        第四步,在调用服务的项目启动类上添加@EnableFeignClients(basePackages ="自定义类的包路径") 
        示例:
        被调用者:
      @RequestMapping("/coupon/coupon")  
      class{
        @RequestMapping("/member/list")
         public R memberCoupons() {
             CouponEntity couponEntity = new CouponEntity();
             couponEntity.setCouponName("满100减10");
             return R.ok().put("coupons", 			   Arrays.asList(couponEntity));
        }
        调用者: 
        接口示例:
            /**
             * 这是一个声明式的远程调用
             */
        @FeignClient("gulimall-coupon")
        public interface CouponFeignService {
            @RequestMapping("/coupon/coupon/member/list")
            public R memberCoupons();
        }
        启动类示例:
            @SpringBootApplication
            @EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")
            @EnableDiscoveryClient
            public class GulimallMemberApplication {
               public static void main(String[] args) {
                  SpringApplication.run(GulimallMemberApplication.class, args);
               }
            }

Nacos做配置中心

导入maven依赖
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
 </dependency>
 在项目的resource路径下创建bootstrap.properties文件
 在此文件中添加
 spring.cloud.nacos.config.server.addr=nacos地址
 1.在nacos可视化界面中创建一个新的namespace命名空间供当前项目使用
 在bootstrap.properties中添加
 spring.cloud.nacos.config.namespace=nacos_namespace中生成的uuid
 2.在nacos中创建的命名空间中可以任意添加配置文件,如数据源的配置
 在bootstrap.properties中添加nacos中的配置
spring.cloud.nacos.config.ext-config[0].data-id=配置文件的名字
spring.cloud.nacos.config.ext-config[0].group=填写的分组
spring.cloud.nacos.config.ext-config[0].refresh=true是否动态刷新容器动态刷新容器功能需要在你想要使用配置文件中属性值的类上添加@RefreshScope注解
此时,springboot中的@Value@configurationproperties等注解都可以动态的从配置中心里取值

Gateway

构建项目时选择GateWay
将网关项目添加至nacos注册中心和配置中心中
为网关项目创立独立的命名空间并在项目中进行配置
创建gateway.yml配置
填写如下配置:
spring:
  cloud:
    gateway:
      outes:
      - id: test_route  唯一标识
      uri: https://www.baidu.com 符合条件跳转的网址
      predicates: 断言型  可参考gateway官网,有多种配置
      - Query=url, baidu  参数url=baidu即符合

你可能感兴趣的:(每日小记,spring,boot,java)