【乐优商城】springcloud微服务-项目搭建
前言:
乐优商城这个视频还可以,于是拿来练练手,我对着视频搭环境一直在service服务模块卡住了,注册中心和网关可以启动,服务模块却一直启动不了,报各种奇怪的错,网上也没有什么好的解决办法,于是我就自己改动了下,不完全按视频的,于是搭建成功了,值得注意的是springcloud的版本不同,配置的也不太一样的。
项目结构:
1.创建父工程:
父工程的pom.xml:
(ps:此处我的springcloud的版本是Finchley.SR1,并不是传智视频上的Finchley.RC1,我刚开始用的是RC1,结果发现在service模块的启动一直会报错,不知道有没有人遇到跟我一样的情况。)
[code]<?xml version="1.0" encoding="UTF-8"?> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" 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.leyou.parent</groupId> <artifactId>leyou</artifactId> <packaging>pom</packaging> <version>1.0.0-SNAPSHOT</version> <modules> <module>ly-registry</module> <module>ly-api-gateway</module> <module>ly-item</module> </modules> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.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>Finchley.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> <leyou.latest.version>1.0.0-SNAPSHOT</leyou.latest.version> <fastDFS.client.version>1.26.1-RELEASE</fastDFS.client.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </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> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
2.创建 Eureka注册中心
模块结构:
pom.xml:
[code]<?xml version="1.0" encoding="UTF-8"?> <project xmlns="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>leyou</artifactId> <groupId>com.leyou.parent</groupId> <version>1.0.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.leyou.common</groupId> <artifactId>ly-registry</artifactId> <version>1.0.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> </project>
创建启动类:LyRegistry
[code]package com.leyou; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; /** * @author: Lucifer * @create: 2018-10-12 01:14 * @description: **/ @SpringBootApplication @EnableEurekaServer public class LyRegistry { public static void main(String[] args) { SpringApplication.run(LyRegistry.class, args); } }
application.yml:
ps:
这里的MySQL连接信息的url建议后面加上:useUnicode=true&characterEncoding=utf8,完整的:jdbc:mysql://localhost:3306/heima?useUnicode=true&characterEncoding=utf8,如果不加的话,后面你会遇到坑的,在数据库执行增加的时候。
[code]server: port: 10086 spring: application: name: ly-registry datasource: url: jdbc:mysql://localhost:3306/heima username: root password: 123456 hikari: maximum-pool-size: 30 minimum-idle: 10 eureka: client: fetchRegistry: false registerWithEureka: false serviceUrl: defaultZone: http://127.0.0.1:${server.port}/eureka server: enableSelfPreservation: false # 关闭自我保护 evictionIntervalTimerInMs: 5000 # 每隔5秒进行一次服务列表清理
run启动类,如图:成功启动Eureka注册中心
3.创建Zuul网关
pom.xml:
[code]<?xml version="1.0" encoding="UTF-8"?> <project xmlns="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>leyou</artifactId> <groupId>com.leyou.parent</groupId> <version>1.0.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.leyou.common</groupId> <artifactId>ly-api-gateway</artifactId> <version>1.0.0-SNAPSHOT</version> <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>
启动类:LyApiGateway
[code]package com.leyou; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; /** * @author: Lucifer * @create: 2018-10-12 01:32 * @description: **/ @SpringBootApplication @EnableDiscoveryClient @EnableZuulProxy public class LyApiGateway { public static void main(String[] args) { SpringApplication.run(LyApiGateway.class, args); } }
网关的配置文件:application.yml:
[code]server: port: 10010 spring: application: name: api-gateway datasource: url: jdbc:mysql://localhost:3306/heima username: root password: 123456 hikari: maximum-pool-size: 30 minimum-idle: 10 eureka: client: serviceUrl: defaultZone: http://127.0.0.1:10086/eureka registryFetchIntervalSeconds: 5 instance: preferIpAddress: true ipAddress: 127.0.0.1 instanceId: ${spring.application.name}:${server.port} zuul: prefix: /api # 添加路由前缀 retryable: true ribbon: ConnectTimeout: 250 # 连接超时时间(ms) ReadTimeout: 2000 # 通信超时时间(ms) OkToRetryOnAllOperations: true # 是否对所有操作重试 MaxAutoRetriesNextServer: 1 # 同一服务不同实例的重试次数 MaxAutoRetries: 1 # 同一实例的重试次数 hystrix: command: default: execution: isolation: thread: timeoutInMillisecond: 10000 # 熔断超时时长:10000ms
run启动类:如图:成功运行
4.创建商品微服务
在ly-item中创建两个子工程:
-
ly-item-interface:主要是对外暴露的接口及相关实体类
-
ly-item-service:所有业务逻辑及内部使用接口
pom.xml:
[code]<?xml version="1.0" encoding="UTF-8"?> <project xmlns="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>ly-item</artifactId> <groupId>com.leyou.service</groupId> <version>1.0.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.leyou.service</groupId> <artifactId>ly-item-service</artifactId> <version>1.0.0-SNAPSHOT</version> <dependencies> <!--Eureka客户端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--web启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </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> <dependency> <groupId>com.leyou.service</groupId> <artifactId>ly-item-interface</artifactId> <version>${leyou.latest.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies> </project>
启动类:LyItemService
[code]package com.leyou; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * @author: Lucifer * @create: 2018-10-12 01:38 * @description: **/ @SpringBootApplication @EnableDiscoveryClient public class LyItemService { public static void main(String[] args) { SpringApplication.run(LyItemService.class, args); } }
配置文件:application.yml:
[code]server: port: 8081 spring: application: name: item-service datasource: url: jdbc:mysql://localhost:3306/heima username: root password: 123456 hikari: maximum-pool-size: 30 minimum-idle: 10 eureka: client: serviceUrl: defaultZone: http://127.0.0.1:10086/eureka instance: leaseRenewalIntervalInSeconds: 5 # 每隔5秒发送一次心跳 leaseExpirationDurationInSeconds: 10 # 10秒不发送就过期 preferIpAddress: true ipAddress: 127.0.0.1 instanceId: ${spring.application.name}:${server.port}
run启动类:如图,成功运行
然后访问浏览器http://127.0.0.1:10086/,如图:
服务成功注册!!!!
阅读更多
- springboot构建spring cloud 微服务项目 搭建ARTHUR框架分享
- 基于SpringBoot 2.0正式版的SpringCloud的微服务实战项目搭建
- springcloud微服务一:spring boot基础项目搭建及问题处理
- Spring Cloud搭建微服务架构----服务消费者
- SpringCloud 笔记 (二)---- 简单搭建一个服务消费者,实现简单的ribbon负载均衡
- [转载]基于 Spring Boot、Spring Cloud、Spring Oauth2 和 Spring Cloud Netflix 等框架构建的微服务项目
- Spring Cloud云架构 - commonservice-sso服务搭建(一)
- 搭建一个微服务框架所需要哪些技术(spring-cloud)
- 利用SpringCloud搭建一个最简单的微服务框架
- 用Spring Cloud和Docker搭建微服务平台
- SpringCloud微服务架构搭建(二):配置中心
- 【Spring Cloud】Eureka服务注册中心搭建
- spring cloud+.net core搭建微服务架构:服务注册(一)
- Spring Cloud云服务架构 - HongHu common-service 项目构建过程
- Spring Cloud 分布式微服务架构 企业级实战 :一、项目构建
- Spring Cloud搭建微服务架构----服务注册与发现
- spring cloud+dotnet core搭建微服务架构:服务注册(一)
- (七)整合spring cloud云服务架构 - HongHu common-service 项目构建过程
- spring cloud+dotnet core搭建微服务架构:服务发现(二)