搭建简单的SpringCloud项目一:注册中心和公共层
注:笔者在搭建途中其实遇见不少问题,统一放在后面的文章说明,现在的搭建是测试OK的。
GitHub:https://github.com/ownzyuan/test-cloud
后续:搭建简单的SpringCloud项目二:服务层和消费层
创建一个非常简单的user表
父工程
新建Maven项目(不直接创建SpringBoot项目):
删掉父工程的src,引入SprinCloud、SprinBoot、Eureka、tkMybatis、Lombok等的依赖
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR1</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.4.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> <version>1.4.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> <version>1.4.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-openfeign-core</artifactId> <version>2.0.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.0.1.RELEASE</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>com.github.drtrang</groupId> <artifactId>druid-spring-boot2-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> </dependency> </dependencies> </dependencyManagement>
搭建注册中心
新建Moudle
eureka项目中pom依赖:
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> </dependencies>
application文件配置
server:
port: 8081
eureka:
instance:
hostname: 127.0.0.1
client:
fetch-registry: false
register-with-eureka: false
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
最后创建启动类,注意加入@EnableEurekaServer
启动项目并访问http://localhost:8081/
注册中心完成
加入common
注:非必要加入的一层,仅为了方便统一管理。
common-base层
这一层主要是将一些基础功能做好封装,在需要的时候直接继承过去就行。
引入Lombok、tkMybatis
<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> </dependency> </dependencies>
首先是基础DTO对象
然后是IBaseService接口
对应实现类(注意有些方法不实现,故使用抽象类):
common层
依赖与common-base一样,同时将common-base层也引进来
<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper</artifactId> </dependency> <dependency> <groupId>com.zy</groupId> <artifactId>cloud-common-base</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>
创建User实体
import lombok.AllArgsConstructor; import lombok.Data; import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.Table; @Data @AllArgsConstructor @Table(name = "user") public class User { @Id private Long id; @Column(name = "name") private String name; @Column(name = "status") private Integer status; }
创建UserDTO:
import com.zy.entity.dto.BaseDTO; import lombok.Data; import lombok.experimental.Accessors; import javax.persistence.Column; import javax.persistence.Table; @Data @Accessors(chain = true) @Table(name = "user") public class UserDTO extends BaseDTO { @Column(name = "name") private String name; }