接01-1的后续:
1、基于父工程meite-shop-parent,创建子模块meite-shop-service和meite-shop-service-api,
项目类型为pom。工程代码如下:
meite-shop-service的pom.xml如下:
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mayikt</groupId>
<artifactId>meite-shop-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>meite-shop-service</artifactId>
<packaging>pom</packaging>
<modules>
<module>meite-shop-service-weixin</module>
<module>meite-shop-service-member</module>
</modules>
<dependencies>
<!-- springcloud feign组件 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
</project>
meite-shop-service-api的pom.xml如下:
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mayikt</groupId>
<artifactId>meite-shop-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>meite-shop-service-api</artifactId>
<packaging>pom</packaging>
<modules>
<module>meite-shop-service-api-weixin</module>
<module>meite-shop-service-api-member</module>
</modules>
<dependencies>
<!-- swagger-spring-boot -->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.7.0.RELEASE</version>
</dependency>
</dependencies>
</project>
2.基于工程meite-shop-service,创建子模块meite-shop-service-member项目,类型为jar,代码如下:
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mayikt</groupId>
<artifactId>meite-shop-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>meite-shop-service-member</artifactId>
<dependencies>
<dependency>
<groupId>com.mayikt</groupId>
<artifactId>meite-shop-service-api-member</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
server:
port: 8300
spring:
application:
name: app-mayikt-member
eureka:
client:
service-url:
defaultZone: http://localhost:8100/eureka
swagger:
base-package: org.example.member.service
title: SpringCloud2.x构建微服务电商项目-会员服务接口
description: 该项目"基于SpringCloud2.x构建微服务电商项目"。
version: 1.1
terms-of-service-url: www.mayikt.com
contact:
name: aa
email: aa@qq.com
package com.mayikt.member;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class AppMember {
public static void main(String[] args) {
SpringApplication.run(AppMember.class, args);
}
}
package com.mayikt.member.feign;
import org.springframework.cloud.openfeign.FeignClient;
import com.mayikt.service.AppService;
@FeignClient(name = "app-mayikt-weixin")
public interface AppServiceFeign extends AppService {
}
package com.mayikt.member.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.mayikt.entity.AppEntity;
import com.mayikt.member.feign.AppServiceFeign;
import com.mayikt.member.service.MemberService;
@RestController
public class MemberServiceImpl implements MemberService {
@Autowired
private AppServiceFeign appServiceFeign;
@GetMapping("/memberInvokWeixin")
public AppEntity memberInvokWeixin() {
return appServiceFeign.getApp();
}
}
3.基于meite-shop-service创建子模块meite-shop-service-weixin,类型为jar,代码如下:
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mayikt</groupId>
<artifactId>meite-shop-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>meite-shop-service-weixin</artifactId>
<dependencies>
<dependency>
<groupId>com.mayikt</groupId>
<artifactId>meite-shop-service-api-weixin</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
####服务启动端口号
server:
port: 8200
###服务名称(服务注册到eureka名称)
spring:
application:
name: app-mayikt-weixin
###服务注册到eureka地址
eureka:
client:
service-url:
defaultZone: http://localhost:8100/eureka
####swagger相关配置
swagger:
base-package: org.example.weixin.service
title: SpringCloud2.x构建微服务电商项目-微信服务接口
description: 该项目"基于SpringCloud2.x构建微服务电商项目"
version: 1.1
terms-of-service-url: www.mayikt.com
contact:
name: aa
email: aa@qq.com
package com.mayikt;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class AppWeiXin {
public static void main(String[] args) {
SpringApplication.run(AppWeiXin.class, args);
}
}
package com.mayikt.service.impl;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.mayikt.entity.AppEntity;
import com.mayikt.service.AppService;
@RestController
public class AppServiceImpl implements AppService {
@GetMapping("/getApp")
public AppEntity getApp() {
return new AppEntity("644064779", "yushengjun644");
}
}
4.基于meite-shop-service-api项目创建子模块meite-shop-service-api-member,类型为jar,代码如下:
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mayikt</groupId>
<artifactId>meite-shop-service-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>meite-shop-service-api-member</artifactId>
<dependencies>
<dependency>
<groupId>com.mayikt</groupId>
<artifactId>meite-shop-service-api-weixin</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
package com.mayikt.member.service;
import org.springframework.web.bind.annotation.GetMapping;
import com.mayikt.entity.AppEntity;
public interface MemberService {
@GetMapping("/memberInvokWeixin")
public AppEntity memberInvokWeixin();
}
5.基于meite-shop-service-api项目创建子模块meite-shop-service-api-weixin,类型为jar,代码如下:
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mayikt</groupId>
<artifactId>meite-shop-service-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>meite-shop-service-api-weixin</artifactId>
</project>
package com.mayikt.entity;
import lombok.Data;
@Data
public class AppEntity {
/**
* 应用id
*/
private String appId;
/**
* 应用密钥
*/
private String appSecret;
public AppEntity() {
}
public AppEntity(String appId, String appSecret) {
super();
this.appId = appId;
this.appSecret = appSecret;
}
}
package com.mayikt.service;
import org.springframework.web.bind.annotation.GetMapping;
import com.mayikt.entity.AppEntity;
public interface AppService {
/**
* 获取app应用信息
*
* @return
*/
@GetMapping("/getApp")
public AppEntity getApp();
}
6、基于meite-shop-baiscs项目创建子模块meite-shop-baiscs-zuul,类型为jar,代码如下:
<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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mayikt</groupId>
<artifactId>meite-shop-basics</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>meite-shop-basics-springcloud-zuul</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<!-- swagger-spring-boot -->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.7.0.RELEASE</version>
</dependency>
</dependencies>
</project>
###服务启动端口号
server:
port: 80
###服务名称(服务注册到eureka名称)
spring:
application:
name: app-mayikt-zuul
###服务注册到eureka地址
eureka:
client:
service-url:
defaultZone: http://localhost:8100/eureka
### 配置网关反向代理
zuul:
routes:
api-a:
### 以 /api-weixin/访问转发到会员服务
path: /api-weixin/**
serviceId: app-mayikt-weixin
api-b:
### 以 /api-member/访问转发到订单服务
path: /api-member/**
serviceId: app-mayikt-member
package com.mayikt.zull;
import java.util.ArrayList;
import java.util.List;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import com.spring4all.swagger.EnableSwagger2Doc;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
@EnableSwagger2Doc
public class AppGateWay {
public static void main(String[] args) {
SpringApplication.run(AppGateWay.class, args);
}
// 添加文档来源
@Component
@Primary
class DocumentationConfig implements SwaggerResourcesProvider {
@Override
public List<SwaggerResource> get() {
List resources = new ArrayList<>();
// app-itmayiedu-order
resources.add(swaggerResource("app-mayikt-member", "/app-mayikt-member/v2/api-docs", "2.0"));
resources.add(swaggerResource("app-mayikt-weixin", "/app-mayikt-weixin/v2/api-docs", "2.0"));
return resources;
}
private SwaggerResource swaggerResource(String name, String location, String version) {
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
swaggerResource.setSwaggerVersion(version);
return swaggerResource;
}
}
启动注册中心(meite-shop-basics-springcloud-eureka)、会员模块(meite-shop-service-member)、微信模块(meite-shop-service-weinxin)、网关项目(meite-shop-basics-zuul)项目,访问:127.0.0.1:80/swagger-ui.html,观察是否成功启动,效果如下: