SpringCloud2

SpringCloud复习2

接着来

第四章 SpringCloud-Hello案例开发-电影服务

4.1 电影服务

(jar工程,提供查询电影功能)cloud-provider-movie

1

改一下:

1.两个pom有很多没用的东西,首先我们不打jar包所以两个build删掉

2.两个properties一样,给他复制到父工程pom文件里

3.还有dependencyManagement

移过去之后,两个子工程对应的就可以删了,只留正儿八经要依赖的jar包就行了

注意

完成之后Hello里面打包方式就不能是jar了,要改成pom

这是Hello的pom的变化1——》

image-20220802174507853

image-20220802174757568

接着把Hello的jav粘到子工程里,movie改变前

image-20220802174838049

movie的pom改动后

image-20220802175358598

接着改动server的pom

image-20220802180351305

改完之后 Hello的pom就可以统一管理两个工程的版本了

接下来为了后边的熔断器,改动一下版本(因为版本太高,图标可能加载不出来)

上图是改之前

image-20220802183321727

看看为什么movie要导入web

image-20220802183613849

因为eureka.server自带web,movie是注册中心的客户端,不带web需要自己导

 

4.1.1 引入eureka-Discovery、web模块

 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 </dependency>

创建工程已经引入过了

 

4.1.2 创建Movie实体类,增加id,movieName属性

不能建到movie里,太笨了因为牵扯远程调用,后边user也要用,所以新建个maven

这个maven要不要父工程都不影响

image-20220802184439537

接下来java下写类

image-20220802184911162

image-20220802185545730

image-20220802185011152

 

4.1.3 创建MovieDao

因为没连数据库,所以硬写就拉倒了哈

image-20220802190124364

dao

 package com.wsk.movie.dao;
 
 import com.wsk.bean.Movie;
 import org.springframework.stereotype.Repository;
 
 @Repository
 public class MovieDao {
     public Movie getNewMovie() {
         Movie movie = new Movie();
         movie.setId(1);
         movie.setMovieName("战狼");
         return movie;
    }
 }

service

 package com.wsk.movie.service;
 
 import com.wsk.bean.Movie;
 import com.wsk.movie.dao.MovieDao;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
 public class MovieService {
     @Autowired
     MovieDao movieDao;
 
     public Movie getNewMovie() {
         return movieDao.getNewMovie();
    }
 }

controller

 package com.wsk.movie.controller;
 
 import com.wsk.bean.Movie;
 import com.wsk.movie.service.MovieService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 public class MovieController {
 
     @Autowired
     MovieService movieService;
     /**
      * 获取最新电影
      */
     @GetMapping("/movie")
     public Movie getNewMovie() {
         return movieService.getNewMovie();
    }
 
 }

然后image-20220802190307086

4.1.4 编写application.yml

 spring:
  application:
    name: cloud-provider-movie
     
 server:
  port: 8000  
   
 # 指定注册到哪个注册中心
 eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true #注册自己服务使用ip的方式

image-20220802190651859

测试的话要加入注解movie入口处,加不加都行,默认开启

image-20220802190918801

启动顺序,先有注册中心再启动服务

image-20220802191146632

让导入测试包的话,删了会自动导入 ,俩工程测试都重新导一下因为改版本了

4.1 电影服务接着

image-20220802191854287

多增加几个movie Zone不用改,方便看结果

image-20220802192143538

接着

image-20220802192339613

刷新浏览器,62/63也都能访问

image-20220802192508375

 

只不过有红字很恶心是吧?

红字其实就是eureka的自我保护机制,一会儿写

 

4.1 现在看看movie服务好使不好使

image-20220802192955398

 

第五章 SpringCloud-Hello案例开发-用户服务

5.1 用户服务

(jar工程,提供查询用户,买电影票功能)cloud-consumer-user

 

5.1.1 引入eureka-Discovery、web模块

新建一个普通的maven工程,父工程为 SpringCloud-Hello,因为用到的都跟movie一样所以把movie的dependencies粘过来就好了 ——》也是继承了common-bean

image-20220802231113040

 

5.1.2 创建User实体类,增加id,userName属性

在common-bean里新建User实体类

1

 

UserController

 @RestController
 public class UserController {
 
     @Autowired
     UserService userService;
 
     @GetMapping("/user")
     public User getUser(@RequestParam("id") Integer id) {
         User user = userService.getUserById(id);
         return user;
    }
 }

UserService

 @Service
 public class UserService {
     @Autowired
     UserDao userDao;
 
     public User getUserById(Integer id) {
         User user = userDao.getUser(id);
         return user;
    }
 
 }

UserDao

 @Repository
 public class UserDao {
     public User getUser(Integer id) {
         User user = new User();
         user.setId(id);
         user.setUserName("张三");
         return user;
    }
 }

User

public class User {
    private int id;
    private String userName;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}

application.yml

spring:
  application:
    name: cloud-consumer-user

server:
  port: 9000

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true #注册中心保存我的ip

看效果:负载均衡准备工作完成

zhangsan

kehuduan

 

posted @ 2022-08-02 19:33  为了她  阅读(60)  评论(0编辑  收藏  举报