0、最终项目结构
1、搭建父工程
1、建项目
在上一篇文章《版本选择》版本选择中,已经确定了版本,新建一个maven工程
新建完父工程后,删除src目录,最终结构
2、改pom.xml文件
在pom.xml文件中锁定SpringBoot、SpringCloud、SpringCloud Alibaba的版本,加入以下内容。dependencyManagement标签是锁定版本,并不是真正的依赖。
<!-- SpringBoot--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.2.RELEASE</version> <relativePath/> </parent> <properties> <!--JDK版本--> <java.version>1.8</java.version> <!--字符集编码--> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!--spring-cloud版本--> <spring.cloud-version>Hoxton.SR9</spring.cloud-version> <!--spring-cloud-alibaba版本--> <spring.cloud.alibaba-version>2.2.6.RELEASE</spring.cloud.alibaba-version> </properties> <dependencyManagement> <dependencies> <!--spring-cloud--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring.cloud-version}</version> <type>pom</type> <scope>import</scope> </dependency> <!--spring-cloud-alibaba--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring.cloud.alibaba-version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <repositories> <repository> <id>aliyun</id> <name>aliyun Repository</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
如果SpringBoot版本报错,在pom文件中加入以下内容
<repositories> <repository> <id>spring-snapshots</id> <url>http://repo.spring.io/libs-snapshot</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-snapshots</id> <url>http://repo.spring.io/libs-snapshot</url> </pluginRepository> </pluginRepositories>
2、提取公共模块
因为微服务项目中,会有很多服务,所以抽取公共部分建成一个模块Module
1、建Module
右键项目--New--Module,选择Maven项目,点击Next
选择父工程,输入模块名称,点击Finish
2、修改pom.xml文件
其中Nacos场景依赖暂时是用于服务的注册与发现使用的,此处不用写版本,因为版本已经在父工程中锁定了
<dependencies> <!--web场景依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--端点监控场景依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!--Nacos场景依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
3、项目结构
3、搭建服务提供者
1、建Module
右键项目--New--Module,选择Maven项目,点击Next,选择父工程,输入模块名称,点击Finish
2、改pom.xml文件
在pom.xml中加入公共模块的依赖
3、新建application.yml文件
在resources目录下新建application.yml文件,并且添加服务名和端口,每个模块的服务名和端口必须保证唯一
4、新建主启动类
在src/main/java中新建一个启动类
5、新建业务类
新建一个Controller,对外暴露一个接口。(此处只是简单的新建一个Controller,真正的业务类包含Entity,Dao,Service,Controller)
6、模块结构
4、搭建服务消费者
1、建Module
同理搭建服务提供者
2、改pom.xml文件
同理搭建服务提供者
3、新建application.yml文件
同理搭建服务提供者,需要修改服务名称和端口
4、新建主启动类
同理搭建服务提供者,不过需要在启动类中注入RestTemplate并开启ribbon(@LoadBalanced注解)
注入RestTemplate:实现远程调用
开启ribbon:使用服务提供者的服务名称调用时,将服务提供者的名称解析成真正的IP和端口
5、新建业务类
同理搭建服务提供者,不过此处是调用服务提供者暴露的接口
在搭建服务提供者的时候,得到以下服务提供者的信息
服务名称:provider-demo
服务暴露的接口:/api/provider/noFeignReq
响应返回值类型:String
6、模块结构