(2)集成springcloud使用feign简单测试

搭建springcloud的服务发现,简单的先测试一下是否能够调动

在taosir-common下建立公共的api接口

package cn.taosir.service.dreamHouse;

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

public interface UserService {
    /**
     * 测试用
     * @return
     */
    @RequestMapping(value="/user/test",method=RequestMethod.GET)
    String test();
}

我们使用taosir-dreamHouse作为服务提供者,首先处理依赖配置pom.xml

   <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Edgware.SR3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- 公共模块 -->
        <dependency>
            <groupId>cn.taosir</groupId>
            <artifactId>taosir-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- springcloud -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!-- database -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

这里将公共模块common引入,建立依赖关系,此外plugins的用意可参考随笔——springboot基于maven多聚合项目的打包

编写简单的服务类

package cn.taosir.dreamhouse.service;
import cn.taosir.service.dreamHouse.UserService;

@RestController
public class UserServiceImpl implements UserService{ @Override public String test() { return "Hello Taosir!"; } }

编写启动类

package cn.taosir.dreamhouse;

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

@SpringBootApplication
@EnableEurekaClient
public class DreamHouseStart {
    public static void main(String[] args) {
        SpringApplication.run(DreamHouseStart.class, args);
    }
}

编写application.yml

spring:
  application:
    name: taosir-dreamHouse
eureka:
  instance:
    hostname: localhost
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8762
logging:
  level:
    root: error

接下来编写服务消费者taosir-api

首先依然处理依赖配置pom.xml

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Edgware.SR3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- 公共模块 -->
        <dependency>
            <groupId>cn.taosir</groupId>
            <artifactId>taosir-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- springcloud -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

application.yml

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8765
spring:
  application:
    name: taosir-api
logging:
  level:
    root: error
ribbon:
  ConnectTimeout: 240000
  ReadTimeout: 240000

编写服务接口

package cn.tao.api.service;

import org.springframework.cloud.netflix.feign.FeignClient;

import cn.taosir.service.dreamHouse.UserService;

@FeignClient(name="taosir-dreamHouse")
public interface UserServiceAPI extends UserService{
    
}

编写控制层

package cn.tao.api.controller.dreamhouse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import cn.tao.api.service.UserServiceAPI;

@RestController
public class UserController {

    @Autowired
    private UserServiceAPI userService;
    
    @RequestMapping(value="/test",method=RequestMethod.GET)
    public String test() {
        return userService.test();
    }
}

编写启动类

package cn.tao.api;

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

@SpringBootApplication
@EnableFeignClients
@EnableEurekaClient
public class ApiStart {
    public static void main(String[] args) {
        SpringApplication.run(ApiStart.class, args);
    }
}

按顺序启动注册中心taosir-eureka,然后启动服务提供者taosir-dreamHouse,taosir-api

访问 http://localhost:8761/ 

访问 http://localhost:8765/test

猜你喜欢

转载自www.cnblogs.com/it-taosir/p/9840524.html