《springcloud学习》 十二 cloud项目改造使用聚合项目

代码地址:

https://download.csdn.net/download/qq_16855077/11460088

聚合项目结构

parent   父项目 存放共同的依赖        pom
--api_service   只有接口,没有实现     pom
-----api_member_service                  jar
-----api_order_service                jar
--member_service_impl   他是api接口的实现    jar
--order_service_impl     他是api接口的实现       jar

实体类相关信息因定义一个公有的项目common,这里为了方便,就不拆分勒。

 1.创建项目结构

1.1 创建父项目

注意选择jdk,jdk版本至少1.8

 1.2 创建api_service

点击父模块的名称 

1.3 api_member_service项目 

右击api_service项目

1.4 api_order_service项目 

右击api_service项目

1.5 member_service_impl项目 

右击parent项目

 

 

1.6 order_server_impl项目 

右击parent项目

 

2.应用 

    2.1 parent项目

             2.1.1 pom.xml

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.fqyd</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>member_service_impl</module>
        <module>order_service_impl</module>
        <module>eureka_server</module>
    </modules>
    <packaging>pom</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.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>Finchley.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--feign依赖 配置-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <!--整合eureka-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

    <!-- Spring Cloud 管理依赖 -->
    <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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

      2.2 eureka_server服务器注册项目 

                 https://blog.csdn.net/qq_16855077/article/details/90752257

       2.3 api_service项目

               2.3.1 pom.xml

<?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>parent</artifactId>
        <groupId>org.fqyd</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>api_service</artifactId>
    <packaging>pom</packaging>
    <modules>
        <module>api_member_service</module>
        <module>api_order_service</module>
    </modules>

</project>

              2.3.2 api_member_service项目

<?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>api_service</artifactId>
        <groupId>org.fqyd</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>api_member_service</artifactId>
    <packaging>pom</packaging>

</project>

实体类: 

package com.fqyd.api.entity;

import lombok.Data;

/**
 * Description:
 * Author: wude
 * Date:  2019/7/25 15:31
 * Modified By:
 */
@Data
public class User {
    private String name;
    private Integer age;
}

   接口类:

package com.fqyd.api.service;

import com.fqyd.api.entity.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * Description:
 * Author: wude
 * Date:  2019/7/25 14:58
 * Modified By:
 */
@FeignClient("fqyd-member")
public interface IMemberService {
    /**
     * 获取会员信息
     * @param name
     * @return
     */
    @RequestMapping("getMember")
    public User getMember(@RequestParam("name") String name);
}

需要增加@RequestParam("name") ,不然,通过FeignClient调用,获取到name是null,本人也搞不懂为什么?

            2.3.3 api_order_service项目 

<?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>api_service</artifactId>
        <groupId>org.fqyd</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>api_order_service</artifactId>
    <packaging>jar</packaging>

</project>
package com.fqyd.api.service;

import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Description:
 * Author: wude
 * Date:  2019/7/25 17:34
 * Modified By:
 */
public interface IOrderService {
    @RequestMapping("getOrder")
    public String orderToMember(String name);
}

 2.4 member_service_impl项目

<?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>parent</artifactId>
        <groupId>org.fqyd</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>member_service_impl</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.fqyd</groupId>
            <artifactId>api_member_service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
####服务器端口号
server:
  port: 8000
###服务别名---服务器注册到注册中心的名称
spring:
  application:
    name: fqyd-member
eureka:
  client:
    ###需要将我的服务注册到eureka上
    registerWithEureka: true
    ###检索服务
    fetchRegistry: true
    ###当前服务注册到eureka服务地址
    serviceUrl:
      defaultZone: http://localhost:8100/eureka/
package com.fqyd.api.service.impl;

import com.fqyd.api.entity.User;
import com.fqyd.api.service.IMemberService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * Description:
 * Author: wude
 * Date:  2019/7/25 15:36
 * Modified By:
 */
@RestController
public class MemberServiceImpl implements IMemberService {
    @RequestMapping("getMember")
    @Override
    public User getMember(@RequestParam("name") String name) {
        User user = new User();
        user.setName(name);
        user.setAge(18);
        return user;
    }
}
package com.fqyd;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * Description:
 * Author: wude
 * Date:  2019/7/25 16:49
 * Modified By:
 */
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class MemberServiceImplApplication {
    public static void main(String[] args) {
        SpringApplication.run(MemberServiceImplApplication.class,args);
    }
}

2.5  order_service_impl

<?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>parent</artifactId>
        <groupId>org.fqyd</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>order_service_impl</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.fqyd</groupId>
            <artifactId>api_order_service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>org.fqyd</groupId>
            <artifactId>api_member_service</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
####服务器端口号
server:
  port: 8020
###服务别名---服务器注册到注册中心的名称
spring:
  application:
    name: fqyd-order
eureka:
  client:
    ###需要将我的服务注册到eureka上
    registerWithEureka: true
    ###检索服务
    fetchRegistry: true
    ###当前服务注册到eureka服务地址
    serviceUrl:
      defaultZone: http://localhost:8100/eureka/
package com.fqyd.api.feign;

import com.fqyd.api.entity.User;
import com.fqyd.api.service.IMemberService;
import org.springframework.cloud.openfeign.FeignClient;

/**
 * Description:
 * Author: wude
 * Date:  2019/8/1 10:35
 * Modified By:
 */
@FeignClient("fqyd-member")
public interface MemberServiceFeign  extends IMemberService {

}

这里使用继承的好处:减少接口重复代码

package com.fqyd.api.service.impl;

import com.fqyd.api.entity.User;
import com.fqyd.api.feign.MemberServiceFeign;
import com.fqyd.api.service.IOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * Description:
 * Author: wude
 * Date:  2019/7/25 17:39
 * Modified By:
 */
@RestController
public class OrderServiceImpl implements IOrderService {
    @Autowired
    private MemberServiceFeign memberServiceFeign;

    @RequestMapping("getOrder")
    @Override
    public String orderToMember(String name) {
        User user = memberServiceFeign.getMember(name);
        if(user == null){
            return "没有找到信息";
        }
        return user.toString();
    }
}
package com.fqyd;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * Description:
 * Author: wude
 * Date:  2019/7/25 16:49
 * Modified By:
 */
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class OrderServiceImplApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderServiceImplApplication.class,args);
    }
}

3.测试

http://localhost:8020/getOrder?name=测试1678

注意:member接口和member实现,传递name参数时,一定要增加@RequestParam("name") 才能接收到值,具体为什么要加,我也没有搞明白。。。。

发布了263 篇原创文章 · 获赞 366 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/qq_16855077/article/details/97249508