下载安装并配置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公钥 设置标题,将复制好的公钥添加到公钥内,确定,输入登录密码验证

springboot ssm 教程 springboot ssh_git


添加好以后在控制台输入

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

利用码云生成项目

点击头像左侧的+号,新建仓库

设置仓库名称

选择语言

添加.gitignore 选择 Maven

添加开源许可证

选择分支模型

springboot ssm 教程 springboot ssh_微服务_02


创建成功后,点击克隆,复制链接打开idea 点击file 选择项目来自版本控制

springboot ssm 教程 springboot ssh_springboot ssm 教程_03


一路yes finish

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

构建springboot微服务

在打开的项目基础上,正常创建springboot项目

springboot ssm 教程 springboot ssh_springboot ssm 教程_04


springboot ssm 教程 springboot ssh_微服务_05


勾选必要的依赖,因为微服务之间需要互相调用,此处利用Spring Cloud Routing 的OpenFeign实现

springboot ssm 教程 springboot ssh_springboot ssm 教程_06


springboot ssm 教程 springboot ssh_spring_07


他微服务模块以此创建就可以了,示例我创建了两个模块

springboot ssm 教程 springboot ssh_git_08

怎么将这两个模块,关联到整个项目内呢?

复制一个pom.xml放到总项目目录内

springboot ssm 教程 springboot ssh_spring_09


修改pom.xml

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

如下

springboot ssm 教程 springboot ssh_git_10


接着点击idea右侧Maven,点击+号,导入该聚合项目的pom文件

springboot ssm 教程 springboot ssh_springboot ssm 教程_11


显示总项目Maven,标明为root的文件

springboot ssm 教程 springboot ssh_springboot ssm 教程_12


测试 root 文件的clean 观察其他子项目是否clean

提交到码云

修改.gitignore,去掉无用的文件,防止提交非代码文件

springboot ssm 教程 springboot ssh_git_13


点击版本控制,Add to VCS 将项目纳入版本控制

springboot ssm 教程 springboot ssh_微服务_14


我们最终的代码是要提交到码云的,所以要给idea配置码云

点击file -->setting–>plugins下载码云插件gitee

springboot ssm 教程 springboot ssh_微服务_15


在版本控制,右键点击commit files

springboot ssm 教程 springboot ssh_微服务_16


输入commit message,点击commit and push 提交到码云

springboot ssm 教程 springboot ssh_微服务_17


如果是初次提交到码云,会提示输入用户名和密码,就是你注册码云的用户名和密码

查看码云,显示提交成功。查看我们配置的.gitignore,你会发现被注释掉的文件并没有上传到码云

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

随便创建一个maven项目,直接next就可以

springboot ssm 教程 springboot ssh_git_18


如下我创建了一个father项目作为所有微服务项目公有的依赖和工具类

然后将father当成依赖,添加到所有微服务pom文件

springboot ssm 教程 springboot ssh_springboot ssm 教程_19

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新建配置页面,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

springboot ssm 教程 springboot ssh_spring_20

实现远程调用

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

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

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

然后将被调用者controller层需要远程调用的方法体以及完整的@RequestMapping("/coupon/queryList")路径,复制到调用者声明为@FeignClient(“demo”)的接口

springboot ssm 教程 springboot ssh_spring_21


在调用者的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的服务列表,观察是否被注册进来

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