SpringCloud学习(一) 项目搭建

2021-06-07  本文已影响0人  疯狂的面条

SpringCloud项目搭建



今天开始学习SpringCloud(几天前就开始了, 只不过一直搭建失败),废了很多头发,终于勉强可以跑起来了。其中很多坑,记录一下,防止遗忘,另外也希望能帮到其他人,少走弯路。
首先,本人用的IDE是idea edu没发现跟社区版的区别),安装了Spring Assistant插件,忽略idea对此插件的各种报错,开撸。

1、创建root项目

新建maven项目

image.png
起一个喜欢的名字,这里是pokia,然后选一个自己能找得到的位置,这里是桌面的pokia文件夹。GroupId一般公司域名逆序写就行,你若问我ouest是什么,自己百度去。
image.png
接着下一步,没配置maven的可以在此配置一下,这里不说这个了。直接点Finish,主项目就创建完成了。在这里等一会儿,它在初始化你刚创建的项目。
初始化完成的项目长这样:
image.png
最后,把src文件夹删除,root项目中,我们不需要它。

2、添加Eureka Server module

若是大家有疑问,Eureka是什么?可以看看一位大神写的,通俗易懂,链接放这里了:
SpringCloud入门
新建一个module,创建方式与root项目差不多

新建module
起一个名字,这里parent自动变成pokia了,很好,不要改动它
image.png
一路下一步,最后添加了eureka-server的module,长这个样子
eureka-server module

3、添加Eureka Client module

我添加的module叫这个名字,eureka-client-support,添加好后,项目长这个样子

eureka-client-module


现在,让我们来写代码吧

4、配置Eureka Server

打开eureka-server的pom.xml文件,添加依赖如图,别忘了点下按钮刷新下


image.png

在main文件夹下添加resources文件夹,如图直接双击就可以


添加resources文件夹
然后在resources文件夹中添加application.yml配置文件,并添加如下配置
server:
  port: 8700

eureka:
  client:
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
    register-with-eureka: false
    fetch-registry: false
  instance:
    hostname: localhost

spring:
  application:
    name: eureka-server

现在,删除原来的App.java,并新增一个有着更好的名字的java类,如下

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

eureka-server到这里先这样了,接下来完善一下client

5、配置Eureka Client

同server一样,打开eureka-client-support的pom.xml文件,添加依赖如下

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

刷新,纳尼?为什么External Libraries里面这么多重复的jar包,只是版本号不一样而已。
百度无果后,用脑子想了想,两个依赖的版本不一致,当时都选择了最新的版本。好的,我们把eureka-server的版本改为3.0.2,瞬间清净了。
同样创建resources,添加application.yml,然后添加如下内容

server:
  port: 8701

eureka:
  client:
    service-url:
      defaultZone: http://${eureka.instance.hostname}:8700/eureka
  instance:
    hostname: localhost

spring:
  application:
    name: eureka-client-support

换一个java类,添加如下代码

@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientSupportApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaClientSupportApplication.class,args);
    }
}

6、测试一下

先把server跑起来,再跑client,然后打开localhost:8700...
等等,server没跑起来,一大堆错误,通过百度,发现是fastjson的版本与springboot的版本不匹配导致,springboot既然用了最新的,fastjson也必须用最新的,2.12.3解决了。再跑,还报错,gson2.1??不知道为啥gson是用了本地的maven库,

The class hierarchy was loaded from the following locations:

    com.google.gson.GsonBuilder: file:/Users/yourname/.m2/repository/com/google/code/gson/gson/2.1/gson-2.1.jar

果断先把本地的这个2.1文件夹删掉
呼,终于成功了。
接下来再把client抱错时打印的本地jar都删除,再启动,client也成功了
访问一下locathost:8700,看看是不是有了注册进来的client。

最后附上demo地址 (推荐用gradle,maven版本有时会有一些问题,,)
gradle版本
maven版本

上一篇下一篇

猜你喜欢

热点阅读