商城2 整合springcloud

  1. springCloud网址  https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html
  2. 注册发现:引入依赖到common,这样别的模块不用引了
    <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>

    <dependency> 
        <groupId> com.alibaba.cloud </groupId> 
        <artifactId> spring-cloud-starter-alibaba-nacos-discovery </artifactId> 
    </dependency>

     

  3. 启动nocas ,下载网址 https://github.com/alibaba/nacos/releases 
  4. 第一步在application.yml中的spring节点下加入
    cloud:
    nacos:
    discovery:
    server-addr: 127.0.0.1:8848
    application:
    name: gulimall-coupon

     

  5. 第二步在启动类加注解,启动程序,访问127.0.0.1:8848/nacos
    @EnableDiscoveryClient
  6. 远程调用OpenFeign,1.在调用端的pom引入feign的依赖
    <dependency> 
        <groupId> org.springframework.cloud </groupId> 
        <artifactId> spring-cloud-starter-openfeign </artifactId> 
    </dependency>

     2.在被调用端写一个接口,供调用端调用

       @RequestMapping("/member/list")
        public R membercoupons(){
            CouponEntity couponEntity = new CouponEntity();
            couponEntity.setCouponName("满100减10");
            return R.ok().put("coupons",Arrays.asList(couponEntity));
        }

    3.在调用端建feign包,建接口,要写被调用端接口的全路径

    @FeignClient("gulimall-coupon")
    public interface CouponFeignService {
    
        @RequestMapping("/coupon/coupon/member/list")
        public R membercoupons();
    }

    4.在调用端启动类加注解,并配上新建的feign包的全路径@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")

  7. 在调用端的controller,加接口,引入feign包的service

        @Autowired
        private CouponFeignService 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"));
        }

     

  8. 测试  http://localhost:8000/member/member/coupons
  9. 配置中心  https://github.com/alibaba/spring-cloud-alibaba  找到中文文档 https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md   演示demo 下的 nacos config example    https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/nacos-example/nacos-config-example/readme-zh.md
  10. 引入依赖
      <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
      </dependency>

     

  11. 在resources下创建文件
    1. 在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据

       spring.application.name=nacos-config-example(模块名)
       spring.cloud.nacos.config.server-addr=127.0.0.1:8848

      2. 测试从配置文件中获取值   (1) 在application.properties 中

      user.name=org
      user.age=18

      (2) 在controller 中

          @Value("${a.user.name}")
          private String name;
          @Value("${user.age}")
          private Integer age;
      
          @RequestMapping("/test")
          public R test(){
              return R.ok().put("name",name).put("age",age);
          }

      (3)测试 http://localhost:7000/coupon/coupon/test

    2. 动态刷新配置文件 新建一个配置列表

       

    3.  

       在controller类上加注解

      @RefreshScope  //动态获取并刷新配置
    4. 编辑新建的配置列表
    5. 再次测试 http://localhost:7000/coupon/coupon/test 看看数据有无变化
  12.  配置中心细节  命名空间   配置集  配置集ID  配置分组
  13. 命名空间   默认public  可以新建几个 

     

     

  14. 在配置列表的prop下也建一个 gulimall-coupon.properties 配置,要想让程序切换到prop的配置列表,在程序的 bootstrap.properties中
    spring.cloud.nacos.config.namespace=命名空间ID
    spring.cloud.nacos.config.group=   (分组名,可不填默认例如pring.cloud.nacos.config.group=dev)

     

  15. 网关  新建getway模块 1.在启动类加注解 开启注册发现 @EnableDiscoveryClient    2.在application.properties中
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
    spring.application.name=gulimall-getway
    server.port=88
  16. 在nacos中新建getway命名空间  在配置列表找到getway 新建配置 gulimall-getway.yml   ,内容:
    spring:
      application:
        name: gulimall-getway
    在新建bootstrap.properties 文件:
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    spring.cloud.nacos.config.namespace=a5b31ef3-81e0-4036-9582-1b6fa96f97a1 #新建的配置的ID

    由于getway没有链接数据库 在启动类的 注解加 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
    启动程序
    在新建application.yml 内容
    spring:
      cloud:
        gateway:
          routes:
            - id: test_route
              uri: https://www.baidu.com
              predicates:
                - Query=url,baidu
    
            - id: qq_route
              uri: https://www.qq.com
              predicates:
                - Query=url,qq
    http://localhost:88/hello?url=baidu
  17. 在gulimall-getway的application.yml里面加入断言
    - id: product_route
      uri: lb://gulimall-product
      predicates:
        - Path=/api/product/**
      filters:
        - RewritePath=/api/(?<segment>.*),/$\{segment}
    

      在nacos上 新建命名空间 product 描述:商品服务 

      在gulimall-product的resources下 新建 bootstrap.properties
    spring.application.name=gulimall-product
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848
    spring.cloud.nacos.config.namespace=16deb817-723f-4e6c-9bf7-2c0e0f64f4f9    #命名空间ID
    
    
       在nacos上 新建配置列表 gulimall-product.yml 描述:商品服务 
       注册到nacos,在gulimall-product的resources下的application.yml 加入
    spring:
      datasource:
        username: root
        password: root
        url: jdbc:mysql://192.168.56.10:3306/gulimall_pms
        driver-class-name: com.mysql.jdbc.Driver
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848
      application:
        name: gulimall-product

     在启动类上加注解   @EnableDiscoveryClient   测试 http://localhost:88/api/product/category/list/tree

    1. 在renren-fast的pom下加入
      <dependency>
      <groupId>com.atguigu.gulimall</groupId>
      <artifactId>gulimall-common</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      </dependency>   
    2. 在application.yml下加入
      application:
      name: renren-fast
      cloud:
      nacos:
      discovery:
      server-addr: 127.0.0.1:8848
    3. 在启动类加注解 
      @EnableDiscoveryClient

 

posted @ 2021-09-06 12:28  gys2020  阅读(41)  评论(0编辑  收藏  举报