SpringCloud项目搭建
今天开始学习SpringCloud(几天前就开始了, 只不过一直搭建失败),废了很多头发,终于勉强可以跑起来了。其中很多坑,记录一下,防止遗忘,另外也希望能帮到其他人,少走弯路。
首先,本人用的IDE是idea edu(没发现跟社区版的区别),安装了Spring Assistant插件,忽略idea对此插件的各种报错,开撸。
1、创建root项目
新建maven项目
起一个喜欢的名字,这里是pokia,然后选一个自己能找得到的位置,这里是桌面的pokia文件夹。GroupId一般公司域名逆序写就行,你若问我ouest是什么,自己百度去。
image.png
接着下一步,没配置maven的可以在此配置一下,这里不说这个了。直接点Finish,主项目就创建完成了。在这里等一会儿,它在初始化你刚创建的项目。
初始化完成的项目长这样:
image.png
最后,把src文件夹删除,root项目中,我们不需要它。
2、添加Eureka Server module
若是大家有疑问,Eureka是什么?可以看看一位大神写的,通俗易懂,链接放这里了:
SpringCloud入门
新建一个module,创建方式与root项目差不多
起一个名字,这里parent自动变成pokia了,很好,不要改动它
image.png
一路下一步,最后添加了eureka-server的module,长这个样子
eureka-server module
3、添加Eureka Client module
我添加的module叫这个名字,eureka-client-support,添加好后,项目长这个样子
现在,让我们来写代码吧
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。
网友评论