练习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项目
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>
里的一致
修改generatorConfig.xml
里的生产代码的目标位置
点击mybatis-generator:generate
生产代码
生产的代码块
注意: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;
}
}
结果如下
5.复制user-center项目修改为content-center
未完待续!!!