https://github.com/yinjihuan/kitty-cloud
服务搭建大家目前看到的都是我已经搭建好了的服务,如果让你从零开始自己搭建一个微服务的项目,要怎么做?
我们以kitty-cloud-article服务来进行讲解,希望大家看完后也能自己动手大家一个属于你自己的微服务项目。
创建Maven多模块项目创建Maven项目有很多种方式,一般创建Spring Boot的Maven项目我们会用 https://start.spring.io/ 这个页面提供的工具来生成,然后导入到IDEA中就可以了。
或者直接在IDEA中创建一个Maven项目,选择菜单Filte --> New --> Project --> Maven项目,然后依次填写信息,最后会生成一个Maven项目。
比如你创建了一个空的Kitty-Cloud项目,然后就需要创建子模块了。创建子模块也非常简单,选中刚刚创建的Kitty-Cloud,右键选择New --> Module --> Maven 依次填写信息,跟上面的一样。
子模块下面我们还细分了三个子模块,分别是api,biz,provider。所以还需要按照上面的步骤分别创建这三个子模块。成功后就是下图的效果:
添加相关框架的依赖 api依赖 <dependencies> <dependency> <groupId>com.cxytiandi</groupId> <artifactId>kitty-spring-cloud-starter-web</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.spring4all</groupId> <artifactId>swagger-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.cxytiandi</groupId> <artifactId>kitty-spring-cloud-starter-feign</artifactId> </dependency> </dependencies>kitty-spring-cloud-starter-web:web依赖,基于spring-boot-starter-web包装的,源码在kitty仓库中。optional设置为true是不想强依赖,这边只是要用到Spring里面的内容。如果哪个模块依赖api模块,那么需要该模块自身有web的依赖。
swagger-spring-boot-starter:swagger依赖,用于生成swagger文档。
kitty-spring-cloud-starter-feign:feign依赖,基于spring-cloud-starter-openfeign包装的,源码在kitty仓库中。
biz依赖 <dependencies> <dependency> <groupId>com.cxytiandi</groupId> <artifactId>kitty-cloud-user-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.cxytiandi</groupId> <artifactId>kitty-spring-cloud-starter-web</artifactId> </dependency> <dependency> <groupId>com.cxytiandi</groupId> <artifactId>kitty-spring-cloud-starter-mybatis</artifactId> </dependency> <dependency> <groupId>com.cxytiandi</groupId> <artifactId>kitty-spring-cloud-starter-nacos</artifactId> </dependency> <dependency> <groupId>com.cxytiandi</groupId> <artifactId>kitty-spring-cloud-starter-jetcache</artifactId> </dependency> <dependency> <groupId>com.cxytiandi</groupId> <artifactId>kitty-spring-cloud-starter-cat</artifactId> </dependency> <dependency> <groupId>com.cxytiandi</groupId> <artifactId>kitty-spring-cloud-starter-dubbo</artifactId> </dependency> <dependency> <groupId>com.cxytiandi</groupId> <artifactId>kitty-spring-cloud-starter-sentinel</artifactId> </dependency> <dependency> <groupId>com.cxytiandi</groupId> <artifactId>kitty-spring-cloud-starter-lock</artifactId> </dependency> </dependencies>kitty-cloud-user-api:需要调用用户服务的接口,所以这边依赖了用户服务的API模块。这也是我们为什么要讲API模块单独抽出来的原因,方便其他服务依赖然后调用服务中的接口。
kitty-spring-cloud-starter-mybatis:mybatis依赖,基于mybatis-plus包装。
kitty-spring-cloud-starter-nacos:nacos依赖,基于spring-cloud-starter-alibaba-nacos-discovery包装。
kitty-spring-cloud-starter-jetcache: jetcache依赖,基于jetcache-starter-redis包装。
kitty-spring-cloud-starter-cat:cat依赖,基于cat-client包装。
kitty-spring-cloud-starter-dubbo:dubbo依赖,基于spring-cloud-starter-dubbo包装。依赖dubbo是为了同时支持Http和Rpc两种协议。
kitty-spring-cloud-starter-sentinel:sentinel依赖,基于spring-cloud-starter-alibaba-sentinel包装。
kitty-spring-cloud-starter-lock:分布式锁依赖,基于redisson-spring-boot-starter