• 入门搭建一个简单的springcloud


    搭建父工程

    创建新的项目,这里我习惯先创建一个空的项目

     命名这个项目和工程存放的路径

     然后点ok会弹出这个窗口, 然后点击new Module

      选择maven,然后不用勾选任何东西,直接next

     填写完毕后直接next

      然后点击finish

     点击ok即可

     这样父工程就被我们创建出来了,然后我们删除一些不用的文件夹。

      然后我们导入父工程的相关依赖

     1 <packaging>pom</packaging>
     2 
     3     <parent>
     4         <groupId>org.springframework.boot</groupId>
     5         <artifactId>spring-boot-starter-parent</artifactId>
     6         <version>2.1.3.RELEASE</version>
     7         <relativePath/>
     8     </parent>
     9 
    10     <properties>
    11         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    12         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    13         <java.version>1.8</java.version>
    14         <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
    15         <mapper.starter.version>2.1.5</mapper.starter.version>
    16         <mysql.version>5.1.47</mysql.version>
    17         <pageHelper.starter.version>1.2.10</pageHelper.starter.version>
    18         <mapper.version>1.1.5</mapper.version>
    19     </properties>
    20 
    21     <dependencyManagement>
    22         <dependencies>
    23             <!-- springCloud -->
    24             <dependency>
    25                 <groupId>org.springframework.cloud</groupId>
    26                 <artifactId>spring-cloud-dependencies</artifactId>
    27                 <version>${spring-cloud.version}</version>
    28                 <type>pom</type>
    29                 <scope>import</scope>
    30             </dependency>
    31             <!-- 通用Mapper启动器 -->
    32             <dependency>
    33                 <groupId>tk.mybatis</groupId>
    34                 <artifactId>mapper-spring-boot-starter</artifactId>
    35                 <version>${mapper.starter.version}</version>
    36             </dependency>
    37             <!-- 分页助手启动器 -->
    38             <dependency>
    39                 <groupId>com.github.pagehelper</groupId>
    40                 <artifactId>pagehelper-spring-boot-starter</artifactId>
    41                 <version>${pageHelper.starter.version}</version>
    42             </dependency>
    43             <!-- mysql驱动 -->
    44             <dependency>
    45                 <groupId>mysql</groupId>
    46                 <artifactId>mysql-connector-java</artifactId>
    47                 <version>${mysql.version}</version>
    48             </dependency>
    49         </dependencies>
    50     </dependencyManagement>
    51 
    52     <dependencies>
    53         <dependency>
    54             <groupId>org.apache.commons</groupId>
    55             <artifactId>commons-lang3</artifactId>
    56             <version>3.4</version>
    57         </dependency>
    58         <dependency>
    59             <groupId>org.projectlombok</groupId>
    60             <artifactId>lombok</artifactId>
    61         </dependency>
    62     </dependencies>
    

    搭建eureka在父工程下新建一个模块

     选择maven直接next

     填写完后next

     注意:改路径

     如下:然后点击finish

     然后引入eureka的依赖

     1  <!--引入eureka组件依赖-->
     2     <dependencies>
     3         <dependency>
     4             <groupId>org.springframework.cloud</groupId>
     5             <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
     6         </dependency>
     7     </dependencies>
     8 
     9     <build>
    10         <plugins>
    11             <plugin>
    12                 <groupId>org.springframework.boot</groupId>
    13                 <artifactId>spring-boot-maven-plugin</artifactId>
    14             </plugin>
    15         </plugins>
    16     </build>

    创建eureka启动类

     在resource目录下创建application.yml配置文件,这里我们配置的是单实例的eureka

    #springcloud中Eureka注册中心的端口号
    server:
      port: 10086
    #服务的名称
    spring:
      application:
        name: eureka
    eureka:
      client:
        fetch-registry: false #true的时候Eureka client在启动时会从Eureka server获取注册信息并缓存到本地,之后只会增量获取信息 false则是每次全量获取
        register-with-eureka: false #是否开启相互注册
        service-url:
          defaultZone: http://127.0.0.1:10086/eureka/ #eureka的url
      instance:
        prefer-ip-address: true

    启动测试

    搭建网关zuul在父工程下新建模块

    和新建eureka步骤一样

     引入网关相关依赖

     1 <dependencies>
     2         <dependency>
     3             <groupId>org.springframework.cloud</groupId>
     4             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
     5         </dependency>
     6         <dependency>
     7             <groupId>org.springframework.cloud</groupId>
     8             <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
     9         </dependency>
    10         <dependency>
    11             <groupId>org.springframework.boot</groupId>
    12             <artifactId>spring-boot-configuration-processor</artifactId>
    13         </dependency>
    14     </dependencies>
    15     <build>
    16         <plugins>
    17             <plugin>
    18                 <groupId>org.springframework.boot</groupId>
    19                 <artifactId>spring-boot-maven-plugin</artifactId>
    20             </plugin>
    21         </plugins>
    22     </build>

    创建网关的启动类

     创建网关的配置文件

     1 server:
     2   port: 10010 #开启的端口
     3 spring:
     4   application:
     5     name: gateway  #服务的名称
     6 eureka:
     7   client:
     8     service-url:
     9       defaultZone: http://127.0.0.1:10086/eureka/ #注册到eureka的地址
    10     registry-fetch-interval-seconds: 5  #eureka client间隔5s去拉取服务注册信息
    11 zuul:
    12   prefix: /api # 添加路由前缀
    13 
    14   sensitive-headers: #忽略请求头设置为null
    15   host:
    16     connect-timeout-millis: 15000
    17     socket-timeout-millis: 60000

    启动测试

    创建通用类在父工程下新建module

     引入依赖

    <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.9.8</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>joda-time</groupId>
                <artifactId>joda-time</artifactId>
            </dependency>
    
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-base</artifactId>
                <version>${mapper.version}</version>
            </dependency>
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-core</artifactId>
                <version>${mapper.version}</version>
            </dependency>
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-extra</artifactId>
                <version>${mapper.version}</version>
            </dependency>
    
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-api</artifactId>
                <version>0.10.5</version>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-impl</artifactId>
                <version>0.10.5</version>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-jackson</artifactId>
                <version>0.10.5</version>
                <scope>runtime</scope>
            </dependency>
        </dependencies>

    通用mapper

    1 @tk.mybatis.mapper.annotation.RegisterMapper
    2 public interface CommonMapper<T,Number> extends Mapper<T>,IdListMapper<T,Number>,InsertListMapper<T> {
    3 }

    通用返回

     1 public class RestfulResult {
     2  
     3     private String result = "Success";
     4     private String message;
     5     private Object data;        // 返回数据
     6     private int cntPage;        // page数
     7     private long cntData;        // 返回数据总数
     8     
     9     public String getResult() {
    10         return result;
    11     }
    12     public void setResult(String result) {
    13         this.result = result;
    14     }
    15     public String getMessage() {
    16         return message;
    17     }
    18     public void setMessage(String message) {
    19         this.message = message;
    20     }
    21     public Object getData() {
    22         return data;
    23     }
    24     public void setData(Object data) {
    25         this.data = data;
    26     }
    27     public int getCntPage() {
    28         return cntPage;
    29     }
    30     public void setCntPage(int cntPage) {
    31         this.cntPage = cntPage;
    32     }
    33     public long getCntData() {
    34         return cntData;
    35     }
    36     public void setCntData(long cntData) {
    37         this.cntData = cntData;
    38     }
    39 }

    创建用户微服务在父工程下新建module

     引入依赖

     1     <dependencies>
     2         <!--web启动器-->
     3         <dependency>
     4             <groupId>org.springframework.boot</groupId>
     5             <artifactId>spring-boot-starter-web</artifactId>
     6         </dependency>
     7         <!--eureka客户端-->
     8         <dependency>
     9             <groupId>org.springframework.cloud</groupId>
    10             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    11         </dependency>
    12         <!--通用mapper-->
    13         <dependency>
    14             <groupId>tk.mybatis</groupId>
    15             <artifactId>mapper-spring-boot-starter</artifactId>
    16         </dependency>
    17         <!--数据库驱动-->
    18         <dependency>
    19             <groupId>mysql</groupId>
    20             <artifactId>mysql-connector-java</artifactId>
    21         </dependency>
    22         <!--实体类-->
    23         <!--单元测试-->
    24         <dependency>
    25             <groupId>org.springframework.boot</groupId>
    26             <artifactId>spring-boot-starter-test</artifactId>
    27         </dependency>
    28         <!--分页助手-->
    29         <dependency>
    30             <groupId>com.github.pagehelper</groupId>
    31             <artifactId>pagehelper-spring-boot-starter</artifactId>
    32         </dependency>
    33 
    34         <dependency>
    35             <groupId>com.jia</groupId>
    36             <artifactId>common</artifactId>
    37             <version>1.0-SNAPSHOT</version>
    38         </dependency>
    39         
    40         </dependencies>
    41         <build>
    42             <plugins>
    43                 <plugin>
    44                     <groupId>org.springframework.boot</groupId>
    45                     <artifactId>spring-boot-maven-plugin</artifactId>
    46                 </plugin>
    47             </plugins>
    48         </build>

      创建用户微服务启动类

     新建实体对象

    1 @Data
    2 @NoArgsConstructor
    3 @Table(name = "student")
    4 public class Student {
    5     @NonNull
    6     private String id;
    7     private String name;
    8     private String age;
    9 }

    新建mapper(存放自定义mapper)

    1 public interface StudentMapper<T> extends Mapper<Student>{
    2 }

    新建service

     1 @Service
     2 public class StudentService {
     3 
     4     @Autowired
     5     private StudentMapper studentMapper;
     6 
     7     public List<Student> queryStudent(Student student){
     8         List list = studentMapper.select(student);
     9         return list;
    10     }
    11 
    12 }

    新建controller

     1 @RestController
     2 @RequestMapping("/hello")
     3 public class StudentController {
     4 
     5     @Autowired
     6     private StudentService studentService;
     7 
     8     @RequestMapping("/student")
     9     public RestfulResult queryStudent(@RequestBody Student student){
    10         RestfulResult result = new RestfulResult();
    11         result.setMessage("1");
    12         result.setData(studentService.queryStudent(student));
    13         return result;
    14     }
    15 }

    配置yml文件

     1 server:
     2   port: 8086
     3 spring:
     4   application:
     5     name: student-service
     6   datasource:
     7     driver-class-name: com.mysql.jdbc.Driver
     8     url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false
     9     username: root
    10     password: 12345678
    11 mybatis:
    12   mapper-locations: mappers/*.xml
    13   configuration:
    14     map-underscore-to-camel-case: true  #驼峰命名映射
    15   type-aliases-package: com.jia.pojo
    16 mapper:
    17   wrap-keyword: "`{0}`" #通用mapper关键字处理
    18 eureka:
    19   client:
    20     service-url:
    21       defaultZone: http://localhost:10086/eureka
    22     registry-fetch-interval-seconds: 5
    23   instance:
    24     prefer-ip-address: true
    25     ip-address: 127.0.0.1

    resource下新建mapper.xml用来存放自定义的mapperxml

    启动测试

    新建Feign微服务在父工程下新建module

     引入依赖

     1 <dependencies>
     2         <!--web启动器-->
     3         <dependency>
     4             <groupId>org.springframework.boot</groupId>
     5             <artifactId>spring-boot-starter-web</artifactId>
     6         </dependency>
     7         <!--eureka客户端-->
     8         <dependency>
     9             <groupId>org.springframework.cloud</groupId>
    10             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    11         </dependency>
    12         <!--通用mapper-->
    13         <dependency>
    14             <groupId>tk.mybatis</groupId>
    15             <artifactId>mapper-spring-boot-starter</artifactId>
    16         </dependency>
    17         <!--数据库驱动-->
    18         <dependency>
    19             <groupId>mysql</groupId>
    20             <artifactId>mysql-connector-java</artifactId>
    21         </dependency>
    22         <!--实体类-->
    23         <!--单元测试-->
    24         <dependency>
    25             <groupId>org.springframework.boot</groupId>
    26             <artifactId>spring-boot-starter-test</artifactId>
    27         </dependency>
    28         <!--分页助手-->
    29         <dependency>
    30             <groupId>com.github.pagehelper</groupId>
    31             <artifactId>pagehelper-spring-boot-starter</artifactId>
    32         </dependency>
    33 
    34         <dependency>
    35             <groupId>com.jia</groupId>
    36             <artifactId>common</artifactId>
    37             <version>1.0-SNAPSHOT</version>
    38         </dependency>
    39 
    40         <!--添加feign-->
    41        <dependency>
    42             <groupId>org.springframework.cloud</groupId>
    43             <artifactId>spring-cloud-starter-openfeign</artifactId>
    44         </dependency>
    45 
    46         <!--<dependency>
    47             <groupId>org.springframework.cloud</groupId>
    48             <artifactId>spring-cloud-openfeign-core</artifactId>
    49         </dependency>-->
    50 
    51         <dependency>
    52             <groupId>org.springframework.cloud</groupId>
    53             <artifactId>spring-cloud-starter-hystrix</artifactId>
    54             <version>1.4.7.RELEASE</version>
    55         </dependency>
    56 
    57         <dependency>
    58             <groupId>org.springframework.boot</groupId>
    59             <artifactId>spring-boot-starter-actuator</artifactId>
    60         </dependency>
    61 
    62         <dependency>
    63             <groupId>com.netflix.hystrix</groupId>
    64             <artifactId>hystrix-javanica</artifactId>
    65             <version>RELEASE</version>
    66         </dependency>
    67 
    68     </dependencies>
    69     <build>
    70         <plugins>
    71             <plugin>
    72                 <groupId>org.springframework.boot</groupId>
    73                 <artifactId>spring-boot-maven-plugin</artifactId>
    74             </plugin>
    75         </plugins>
    76     </build>

    新建feign启动类

     新建pojo

     新建client

     serviceFeignClient

    1 @Component
    2 @FeignClient(name= "student-service",fallback = ServiceFallback.class)
    3 public interface ServiceFeignClient {
    4     @RequestMapping(value = "/hello/student",method = RequestMethod.POST)
    5     RestfulResult queryStudent(@RequestBody Student student);
    6 }

    serviceFallback

    1 @Component
    2 public class ServiceFallback implements ServiceFeignClient {
    3     @Override
    4     public RestfulResult queryStudent(Student student) {
    5         RestfulResult result = new RestfulResult();
    6         result.setData("服务调用失败");
    7         return result;
    8     }
    9 }

    新建controller,注入feignServiceClient

     1 @RestController
     2 @RequestMapping("/hi")
     3 public class StudentController {
     4 
     5     @Autowired
     6     private ServiceFeignClient serviceFeignClient;
     7 
     8     @RequestMapping("/student")
     9     public RestfulResult queryStudent(@RequestBody Student student){
    10         return  serviceFeignClient.queryStudent(student);
    11     }
    12 
    13 }

    yml配置文件

     1 server:
     2   port: 8087
     3 spring:
     4   application:
     5     name: feign-service
     6   datasource:
     7     driver-class-name: com.mysql.jdbc.Driver
     8     url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&useSSL=false
     9     username: root
    10     password: 12345678
    11 mybatis:
    12   mapper-locations: mappers/*.xml
    13   configuration:
    14     map-underscore-to-camel-case: true  #驼峰命名映射
    15   type-aliases-package: com.jia.pojo
    16 mapper:
    17   wrap-keyword: "`{0}`" #通用mapper关键字处理
    18 eureka:
    19   client:
    20     service-url:
    21       defaultZone: http://localhost:10086/eureka
    22     registry-fetch-interval-seconds: 5
    23   instance:
    24     prefer-ip-address: true
    25     ip-address: 127.0.0.1
    26 feign:
    27   hystrix:
    28     enabled: true

    pojo

    @Data
    @NoArgsConstructor
    @Table(name = "student")
    public class Student {
        @NonNull
        private String id;
        private String name;
        private String age;
    }
    

    复制一份用户微服务,修改下配置端口,启动

    启动feign测试

  • 相关阅读:
    C# 语音识别
    Android—监听器
    android-Activity
    Android小案例——简单图片浏览器
    针对Android 模拟器启动慢的问题
    emulator-arm.exe 已停止工作、 emulator-x86 已停止工作
    android模拟器启动没有拨号功能
    安装好android的adt以后重启eclipse,但是没有创建AVD的图标
    android环境搭建——工欲善其事,必先利其器 2
    SQL 中常见的系统存储过程
  • 原文地址:https://www.cnblogs.com/WonderfulU/p/12192384.html
Copyright © 2020-2023  润新知