电商项目专题(三)-项目搭建

1.搭建父工程

创建统一的父工程:yigou,用来管理依赖及其版本,注意是创建project,而不是moudle

填写坐标信息:

填写保存位置信息:

父工程不需要代码,只是管理依赖,因此我们不选择任何SpringCloud的依赖。

然后将pom文件修改成我这个样子:

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.yigou.parent</groupId><artifactId>yigou</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.4.RELEASE</version><relativePath/><!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR1</spring-cloud.version><mybatis.starter.version>1.3.2</mybatis.starter.version><mapper.starter.version>2.0.2</mapper.starter.version><druid.starter.version>1.1.9</druid.starter.version><mysql.version>5.1.32</mysql.version><pageHelper.starter.version>1.2.3</pageHelper.starter.version><fastDFS.client.version>1.26.1-RELEASE</fastDFS.client.version></properties><dependencyManagement><dependencies><!-- springCloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- mybatis启动器 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.starter.version}</version></dependency><!-- 通用Mapper启动器 --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>${mapper.starter.version}</version></dependency><!-- 分页助手启动器 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>${pageHelper.starter.version}</version></dependency><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!--FastDFS客户端--><dependency><groupId>com.github.tobato</groupId><artifactId>fastdfs-client</artifactId><version>${fastDFS.client.version}</version></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

可以发现,我们在父工程中引入了SpringCloud等很多以后需要用到的依赖,以后创建的子工程就不需要自己引入了。

2.创建EurekaServer

2.1.创建工程

这个大家应该比较熟悉了。
我们的注册中心,起名为:yigou-registry
直接创建maven项目,自然会继承父类的依赖:
选择新建module:

选择maven安装,但是不要选择骨架:

然后填写项目坐标,我们的项目名称为yigou-registry:

选择安装目录,因为是聚合项目,目录应该是在父工程leyou的下面:

2.2.添加依赖

添加EurekaServer的依赖:

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>yigou</artifactId><groupId>com.yigou.parent</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>yigou-registry</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies></project>

2.3.编写启动类

/** * @author bruceliu * @create 2019-09-01 10:51 * @description */@SpringBootApplication@EnableEurekaServerpublicclassYigouRegistry{publicstaticvoidmain(String[]args){SpringApplication.run(YigouRegistry.class,args);}}

2.4.配置文件

server:port:10086spring:application:name:yigou-registryeureka:client:fetch-registry:falseregister-with-eureka:false#false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务service-url:defaultZone:http://127.0.0.1:${server.port}/eurekaserver:enable-self-preservation:false# 关闭自我保护eviction-interval-timer-in-ms:5000# 每隔5秒进行一次服务列表清理

2.5.项目的结构:

目前,整个项目的结构如图:

3.创建Zuul网关

3.1.创建工程

与上面类似,选择maven方式创建Module,然后填写项目名称,我们命名为:yigou-api-gateway

填写保存的目录:

3.2.添加依赖

这里我们需要添加Zuul和EurekaClient的依赖:

<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>yigou</artifactId><groupId>com.yigou.parent</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>yigou-api-gateway</artifactId><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!--是springboot提供的微服务检测接口,默认对外提供几个接口:/info--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies></project>

3.3.编写启动类

/** * @author bruceliu * @create 2019-09-01 11:05 * @description */@SpringBootApplication@EnableDiscoveryClient@EnableZuulProxypublicclassYigouApiGateway{publicstaticvoidmain(String[]args){SpringApplication.run(YigouApiGateway.class,args);}}

3.4.配置文件

server:port:10010spring:application:name:api-gatewayeureka:client:service-url:defaultZone:http://127.0.0.1:10086/eurekaregistry-fetch-interval-seconds:5instance:prefer-ip-address:trueip-address:127.0.0.1instance-id:${spring.application.name}:${server.port}zuul:prefix:/api# 添加路由前缀retryable:trueribbon:ConnectTimeout:250# 连接超时时间(ms)ReadTimeout:2000# 通信超时时间(ms)OkToRetryOnAllOperations:true# 是否对所有操作重试MaxAutoRetriesNextServer:1# 同一服务不同实例的重试次数MaxAutoRetries:1# 同一实例的重试次数hystrix:command:default:execution:isolation:thread:timeoutInMillisecond:10000# 熔断超时时长:10000ms

3.5.项目结构

目前,yigou下有两个子模块:

yigou-registry:服务的注册中心(EurekaServer) yigou-api-gateway:服务网关(Zuul)

目前,服务的结构如图所示:

截止到这里,我们已经把基础服务搭建完毕,为了便于开发,统一配置中心(ConfigServer)我们留待以后添加。