01-2.技术选型,基础项目搭建

接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,观察是否成功启动,效果如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值