SpringBoot创建微服务项目

下载安装并配置git

为自己的git设置名字

git config --global user.name "XXX"

配置自己注册码云的邮箱

git config --global user.email "XXX@163.com"

生成ssh公钥

ssh-keygen -t rsa -C "XXX@163.com"

查看公钥

cat ~/.ssh/id_rsa.pub

复制公钥添加到码云
点击ssh公钥 设置标题,将复制好的公钥添加到公钥内,确定,输入登录密码验证
在这里插入图片描述
添加好以后在控制台输入

ssh -T git@gitee.com
//输入yes
//控制台会输出已成功添加验证( You've successfully authenticated)

利用码云生成项目

点击头像左侧的+号,新建仓库
设置仓库名称
选择语言
添加.gitignore 选择 Maven
添加开源许可证
选择分支模型
在这里插入图片描述
创建成功后,点击克隆,复制链接

打开idea 点击file 选择项目来自版本控制
在这里插入图片描述
一路yes finish

利用idea找到项目保存的位置,打开,则利用码云构建项目完成

构建springboot微服务

在打开的项目基础上,正常创建springboot项目
在这里插入图片描述
在这里插入图片描述
勾选必要的依赖,因为微服务之间需要互相调用,此处利用Spring Cloud Routing 的OpenFeign实现
在这里插入图片描述
在这里插入图片描述
他微服务模块以此创建就可以了,示例我创建了两个模块
在这里插入图片描述

怎么将这两个模块,关联到整个项目内呢?
复制一个pom.xml放到总项目目录内
在这里插入图片描述
修改pom.xml

修改
	<artifactId>test</artifactId>
	<name>test</name>
设置 <packaging>pom</packaging> 为pom类型
利用<modules>聚合各个小项目
 <modules>
    <module>demo</module>
    <module>demo1</module>
</modules>

如下
在这里插入图片描述
接着点击idea右侧Maven,点击+号,导入该聚合项目的pom文件
在这里插入图片描述
显示总项目Maven,标明为root的文件
在这里插入图片描述
测试 root 文件的clean 观察其他子项目是否clean

提交到码云

修改.gitignore,去掉无用的文件,防止提交非代码文件
在这里插入图片描述
点击版本控制,Add to VCS 将项目纳入版本控制
在这里插入图片描述
我们最终的代码是要提交到码云的,所以要给idea配置码云
点击file -->setting–>plugins下载码云插件gitee
在这里插入图片描述
在版本控制,右键点击commit files
在这里插入图片描述
输入commit message,点击commit and push 提交到码云
在这里插入图片描述
如果是初次提交到码云,会提示输入用户名和密码,就是你注册码云的用户名和密码
查看码云,显示提交成功。查看我们配置的.gitignore,你会发现被注释掉的文件并没有上传到码云

为所有的微服务模块统一添加配置文件

随便创建一个maven项目,直接next就可以
在这里插入图片描述
如下我创建了一个father项目作为所有微服务项目公有的依赖和工具类
然后将father当成依赖,添加到所有微服务pom文件
在这里插入图片描述

Nacos服务发现

直接引入依赖

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

配置nacos服务发现

Nacos配置中心

Nacos配置中心

注意是在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据

其次在Nacos新建配置页面,Data ID 命名规则必须是你在bootstrap.properties文件定义的 spring.application.name.properties 设置成其他的不好使

在配置命名空间时,注意在bootstrap.properties中配置spring.cloud.nacos.config.namespace=命名空间ID (不是命名空间名称

配置中心示例,优先扫描配置中心的配置信息,配置中心没有的会默认扫描自定义的配置信息

spring.application.name=demo
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
        

#nacos命名空间
spring.cloud.nacos.config.namespace=0c9dffe2-d167-432d-86ee-cf0d06e0e1ec

#nacos加载多个配置文件
spring.cloud.nacos.config.ext-config[0].data-id=datasource.properties
#自动刷新
spring.cloud.nacos.config.ext-config[0].refresh=true
#分组
spring.cloud.nacos.config.ext-config[0].group=dev

#nacos加载多个配置文件
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.properties
#自动刷新
spring.cloud.nacos.config.ext-config[1].refresh=true
#分组
spring.cloud.nacos.config.ext-config[1].group=dev

在这里插入图片描述

实现远程调用

实现远程调用主要用到了springcloud中的openFeign,在之前创建模块项目的时候已经勾选好了

首先在调用者controller同级目录创建一个包,表示该包下的接口都是需要远程调用的

其次在该包下创建接口,用@FeignClient(“demo”)声明该接口为一个需要需要远程调用的接口,其中demo为nacos中被调用者微服务注册的名字

然后将被调用者controller层需要远程调用的方法体以及完整的@RequestMapping("/coupon/queryList")路径,复制到调用者声明为@FeignClient(“demo”)的接口
在这里插入图片描述
在调用者的controller层注入该fegin包下的接口

 	@Autowired
    private FeignService feignService;

    @RequestMapping("/queryList")
    public List<Integer> queryList(){
        List<Integer> list = feignService.queryList();
        return list;
    }

在调用者启动类上添加注解,让他去扫描feign包,搜索被注解为@FeignClient()的接口

@EnableFeignClients(basePackages = "com.atguigu.gulimail.member.feign")

启动nacos ,启动调用者和被调用者,观察nacos的服务列表,观察是否被注册进来

然后测试请求调用者的接口,观察数据有没有被请求出来

posted @ 2022-01-20 23:22  暮雨寒冬  阅读(1309)  评论(0编辑  收藏  举报