入门搭建一个简单的springcloud(代码片段)

MonstersU MonstersU     2022-12-24     455

关键词:

搭建父工程

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

 

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

 

 然后点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测试

springcloud之eureka集群搭建(代码片段)

...一个集群的搭建了。采用之前的入门案例进行搭建,SpringCloud之Eureka入门案例详细步骤添加配置文件spring:application:#服务注册列表中的应用名称,会在Eureka中显示(注意中间不要以下划线连接, 查看详情

springcloud入门教程-搭建配置中心服务

简介SpringCloud提供了一个部署微服务的平台,包括了微服务中常见的组件:配置中心服务,API网关,断路器,服务注册与发现,分布式追溯,OAuth2,消费者驱动合约等。我们不必先知道每个组件有什么作用,随着教程的深入,我... 查看详情

dubbo入门--搭建一个最简单的demo框架(代码片段)

来源自:https://blog.csdn.net/noaman_wgs/article/details/70214612Dubbo背景和简介Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,... 查看详情

matlab从入门到精通:搭建一个简单的bp神经网络(附代码)(代码片段)

01|构建数据集构造一个1行1000列的一维矩阵,这1000个数全部都在(0,1)这个区间内。规定当某一列的数字大于等于0.5时,输出为1,否则输出-1。构造数据集的代码如下。%% 构造数据集inputDim=1;        ... 查看详情

springcloud基础入门

1.环境搭建在开始SpringCloud之前,先看一下一个简单的服务提供者和服务消费者。服务提供者提供一个REST风格的HTTP接口给服务消费者。1.2pom配置实体类packagecom.test.springcloud.provider.pojo;publicclassUser{privateLongid;privateStringusername;//getter... 查看详情

简谈springcloud的入门配置(代码片段)

...例的四步骤:1)配置Eureka服务器在Spring官网上新建一个SpringCloud项目增加Eurake组件将其中的pom.xml文件拷贝至eclipse新建的Maven文件中由于SpringCloud是基于SpringBoot的,先创建一个启动类Applicationpackagecn.lch;importorg.springframework.boot.Spring... 查看详情

java之springcloud微服务搭建(第一个阶段)springboot项目实现商品服务器端是调用(代码片段)

Java之SpringCloud微服务入门到精通Spring微服务快速入门(Eureka)一、Springcloud微服务概述1、微服务中的相关概念(1)服务注册与发现(2)负载均衡(3)熔断(4)链路追踪(5)API网关2... 查看详情

springcloud快速搭建(代码片段)

1.SpringCloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、负载均衡、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另... 查看详情

springcloud学习系列之一-----搭建一个高可用的注册中心(eureka)(代码片段)

前言本篇主要介绍的是SpringCloud相关知识、微服务架构以及搭建一个高可用的服务注册与发现的服务模块(Eureka)。SpringCloud介绍SpringCloud是在SpringBoot的基础上构建的,用于简化分布式系统构建的工具集,为开发人员提供快速建立分... 查看详情

springcould入门(代码片段)

1. 什么是SpringCloud?Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,主节点选举,分布式session,集群... 查看详情

小白新手springcloud开发简单总结-springboot概念(代码片段)

...简化监控二 快速搭建SpringBoot项目三总结前言在小白新手SpringCloud开发简单总结(一 查看详情

十八.springcloud极简入门-zipkin整合rabbitmq使用elasticsearch存储的高性能链路追踪方案(代码片段)

前言之前讲过一个版本的Zipkin链路追踪,《Sleuth整合ZipKin链路追踪》,讲了Zipkin的工作流程,以及简单集成Zipkin,这篇文章将会对之前的方案进行升级,使用RabbitMQ异步收集数据,使用ElasticSearch进行数据存... 查看详情

springcloud从入门到进阶——使用springboot搭建微服务

内容  SpringBoot整合SpringCloud的Eureka、Zuul等组件,快速实现简单易懂且具有服务熔断、负载均衡的分布式架构1.0,体验微服务的魅力。版本  IDE:IDEA2017.2.2x64  JDK:1.8.0_171  manve:3.3.3  SpringBoot:1.5.9.RELEASE  SpringCloud... 查看详情

reactnative入门-环境搭建,创建第一个helloworld(代码片段)

CreateReactNativeApp 是开始构建新的ReactNative应用程序的最简单方法。它允许您启动项目而无需安装或配置任何工具来构建本机代码-无需安装Xcode或AndroidStudio。先安装Node.Js,则可以使用npm来安装create-react-native-app命令行实用程序... 查看详情

springcloud分布式微服务搭建(代码片段)

本例子是一个springcloud的configserver,client例子利用git存储各个服务的配置文件server获取配置文件的仓库位置,并把server注册到eureka中,同时为了实现HA,多开几个serverclient通过server获得git的地址,运行时利用获得的git配置文件... 查看详情

springcloud分布式微服务搭建(代码片段)

这个例子主要是将zuul和eureka结合起来使用,zuul作为反向代理,同时起到负载均衡的作用,同时网关后面的消费者也作为服务提供者,同时提供负载均衡。一.API网关(摘自百度)API网关是一个服务器,是系统的唯一入口。从面向... 查看详情

使用springcloud搭建服务注册中心

我们在之前的博客中已经介绍过阿里的分布式服务框架dubbo【Linux上安装Zookeeper以及一些注意事项】【一个简单的案例带你入门Dubbo分布式框架】,但是小伙伴们应该也看到了,阿里的dubbo无法单独完成工作,我们还要借助于Apache... 查看详情

从springcloud看一个微服务框架的「五脏六腑」(代码片段)

原文:https://webfe.kujiale.com/spring-could-heart/SpringCloud是一个基于SpringBoot实现的微服务框架,它包含了实现微服务架构所需的各种组件。注:SpringBoot简单理解就是简化Spring项目的搭建、配置、组合的框架。因为与构建微服务本身没... 查看详情