练习Spring Cloud Alibaba

Spring Cloud Alibaba是由阿里巴巴提供的一套微服务开发一站式解决方案

本次学习用到的主要组件:

  • Nacos:是一个集服务动态发现、服务配置、服务元数据及流量管理于一体的管理中心,能帮助我们更好的发现、配置和管理微服务。
  • Spring Cloud Ribbon:是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。
  • Feign:是一个声明式WebService客户端.使用Feign能让编写WebService客户端更加简单
  • Sentinel:轻量级的流量控制,熔断降级Java库
  • RocketMQ:是一款分布式、队列模型的开源消息中间件
  • Spring Cloud Gateway: 是为微服务架构提供一种简单而有效的统一的 API 路由管理方式。其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等
  • Sleuth+Zipkin:Sleuth是一个Spring Cloud的分布式跟踪解决方案,Zipkin是一款开源的分布式实时数据追踪系统.

开始Spring Cloud Alibaba的学习啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦

1.使用idea工具快速搭建spring-boot项目

springcloud alibaba 各组件原理详解 springcloud alibaba搭建_java


springcloud alibaba 各组件原理详解 springcloud alibaba搭建_Cloud_02


springcloud alibaba 各组件原理详解 springcloud alibaba搭建_生成器_03

2.MyBatis 通用 Mapper4 引入

通用 Mapper4 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及Example相关的单表操作。通用 Mapper 是为了解决 MyBatis 使用中 90% 的基本操作,使用它可以很方便的进行开发,可以节省开发人员大量的时间。

1.在pom里去掉mybatis-spring-boot-starter的依赖,加入Mapper4依赖(4.0之后的Mapper使用@RegisterMapper注解,无需添加配置)

<dependency>
  <groupId>tk.mybatis</groupId>
  <artifactId>mapper-spring-boot-starter</artifactId>
  <version>版本号</version>
</dependency>

2.启动类添加@MapperScan注解

// 扫描mybatis哪些包里面的接口
@MapperScan("com.itkkl")
@SpringBootApplication
public class UserCenterApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserCenterApplication.class, args);
    }

}

3.添加通用 Mapper 专用代码生成器

在pom文件加入以下代码块

<plugin>
   <groupId>org.mybatis.generator</groupId>
     <artifactId>mybatis-generator-maven-plugin</artifactId>
     <version>1.3.6</version>
     <configuration>
         <configurationFile>
             ${basedir}/src/main/resources/generator/generatorConfig.xml
         </configurationFile>
         <overwrite>true</overwrite>
         <verbose>true</verbose>
     </configuration>
     <dependencies>
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>8.0.16</version>
         </dependency>
         <dependency>
             <groupId>tk.mybatis</groupId>
             <artifactId>mapper</artifactId>
             <version>4.1.5</version>
         </dependency>
     </dependencies>
 </plugin>

添加generatorConfig.xml配置文件,目录要与<configurationFile>里的一致

springcloud alibaba 各组件原理详解 springcloud alibaba搭建_java_04


修改generatorConfig.xml里的生产代码的目标位置

springcloud alibaba 各组件原理详解 springcloud alibaba搭建_java_05


点击mybatis-generator:generate生产代码

springcloud alibaba 各组件原理详解 springcloud alibaba搭建_生成器_06


生产的代码块

springcloud alibaba 各组件原理详解 springcloud alibaba搭建_Cloud_07

注意:MyBatis Generator 生成器把其他数据库的同名表生成下来的问题

在使用生成器生成代码的时候遇到了这个错误, 现象就是某个类中出来了数据库表里面没有的字段,非常奇怪.

解决方法是在生成器的配置文件里的数据库连接地址(就是jdbcUrl)中添加这个参数:

nullCatalogMeansCurrent=true

4.编写test测试代码

public class TestController {
    /**
     * // 注意:研究一下@Resource和@Autowired的区别
     * // 面试题
     */
    @Autowired
    private  UserMapper userMapper;

    @GetMapping("/test")
    public User testInsert() {
        User user = new User();
        user.setAvatarUrl("xxx");
        user.setBonus(100);
        user.setCreateTime(new Date());
        user.setUpdateTime(new Date());
        this.userMapper.insertSelective(user);

        return user;
    }
}

结果如下

springcloud alibaba 各组件原理详解 springcloud alibaba搭建_微服务_08

5.复制user-center项目修改为content-center

springcloud alibaba 各组件原理详解 springcloud alibaba搭建_微服务_09

未完待续!!!