电商项目专题(三)-项目搭建
1.搭建父工程创建统一的父工程yigou用来管理依赖及其版本注意是创建project而不是moudle填写坐标信息填写保存位置信息父工程不需要代码只是管理依赖因此我们不选择任何SpringCloud的依赖。然后将pom文件修改成我这个样子?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.yigou.parent/groupIdartifactIdyigou/artifactIdversion1.0-SNAPSHOT/versionpackagingpom/packagingparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.4.RELEASE/versionrelativePath/!-- lookup parent from repository --/parentpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingjava.version1.8/java.versionspring-cloud.versionGreenwich.SR1/spring-cloud.versionmybatis.starter.version1.3.2/mybatis.starter.versionmapper.starter.version2.0.2/mapper.starter.versiondruid.starter.version1.1.9/druid.starter.versionmysql.version5.1.32/mysql.versionpageHelper.starter.version1.2.3/pageHelper.starter.versionfastDFS.client.version1.26.1-RELEASE/fastDFS.client.version/propertiesdependencyManagementdependencies!-- springCloud --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependency!-- mybatis启动器 --dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion${mybatis.starter.version}/version/dependency!-- 通用Mapper启动器 --dependencygroupIdtk.mybatis/groupIdartifactIdmapper-spring-boot-starter/artifactIdversion${mapper.starter.version}/version/dependency!-- 分页助手启动器 --dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion${pageHelper.starter.version}/version/dependency!-- mysql驱动 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/version/dependency!--FastDFS客户端--dependencygroupIdcom.github.tobato/groupIdartifactIdfastdfs-client/artifactIdversion${fastDFS.client.version}/version/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project可以发现我们在父工程中引入了SpringCloud等很多以后需要用到的依赖以后创建的子工程就不需要自己引入了。2.创建EurekaServer2.1.创建工程这个大家应该比较熟悉了。我们的注册中心起名为yigou-registry直接创建maven项目自然会继承父类的依赖选择新建module选择maven安装但是不要选择骨架然后填写项目坐标我们的项目名称为yigou-registry:选择安装目录因为是聚合项目目录应该是在父工程leyou的下面2.2.添加依赖添加EurekaServer的依赖?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdyigou/artifactIdgroupIdcom.yigou.parent/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdyigou-registry/artifactIddependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-server/artifactId/dependency/dependencies/project2.3.编写启动类/** * author bruceliu * create 2019-09-01 10:51 * description */SpringBootApplicationEnableEurekaServerpublicclassYigouRegistry{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 version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdyigou/artifactIdgroupIdcom.yigou.parent/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdyigou-api-gateway/artifactIddependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-zuul/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependency!--是springboot提供的微服务检测接口默认对外提供几个接口/info--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependency/dependencies/project3.3.编写启动类/** * author bruceliu * create 2019-09-01 11:05 * description */SpringBootApplicationEnableDiscoveryClientEnableZuulProxypublicclassYigouApiGateway{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# 熔断超时时长10000ms3.5.项目结构目前yigou下有两个子模块yigou-registry服务的注册中心EurekaServer yigou-api-gateway服务网关Zuul目前服务的结构如图所示截止到这里我们已经把基础服务搭建完毕为了便于开发统一配置中心ConfigServer我们留待以后添加。