02-搭建微服务-父工程、服务提供者、服务消费者

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、模块结构

猜你喜欢

转载自blog.csdn.net/zhuzbYR/article/details/121613827