美文网首页
springcloud之eureka

springcloud之eureka

作者: 一个神奇的女码农 | 来源:发表于2019-05-17 15:09 被阅读0次

    废话不多说开搞:

    先创建一个service 工程:

    pom 依赖如下:

    <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>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
        </dependencies>
        <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>
    

    启动类文件加上注解:@EnableEurekaServer
    启动类代码如下:

    @SpringBootApplication
    @EnableEurekaServer
    @PropertySource(value={"file:${INFOSYS_CONFIG}/eurekaserver.properties"})
    public class EurekaserverApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaserverApplication.class, args);
        }
    
    }
    

    配置文件:

    spring.application.name=spring-cloud-eureka
    
    server.port=8000
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false
    
    eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
    

    启动后发现报错了
    一顿操作后发现是boot 与cloud 版本不一样 将版本改成最新的或者pom 添加:

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.3.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    

    启动成功之后访问:http://localhost:8000,就能查看服务页面

    image.png

    当application下面显示No instances available,说明目前没有服务

    再建一个producer工程

    pom 依赖如下:

     <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
            <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>
        </dependencies>
        <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>
    

    配置文件如下:

    spring.application.name=spring-cloud-admin
    server.port=9000
    eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
    

    启动类代码如下:

    @SpringBootApplication
    @PropertySource(value={"file:${INFOSYS_CONFIG}/eurekaproducer.properties"})
    @EnableEurekaClient
    @ComponentScans({@ComponentScan("com.rt.platform.business.**")})
    public class EurekaproducerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaproducerApplication.class, args);
        }
    }
    

    服务启动成功之后,访问eureka页面可以看到服务注册上去了:


    image.png

    编写一个可调用接口:
    controller 代码如下:

    @RestController
    public class HelloController {
        @RequestMapping("/hello")
        public String index(@RequestParam String name) {
            return "你好 "+name+",欢迎来到cloud全家桶";
        }
    }
    

    再次启动服务并访问接口:http://localhost:9000/hello?name=hanmeimei
    可以看到接口访问成功,页面展示:

    image.png

    接下来就是consumer工程了

    pom 依赖如下:

    <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>
            <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>
        <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>
    

    配置文件如下:

    spring.application.name=spring-cloud-consumer
    server.port=9005
    eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
    

    启动类代码如下:

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients
    @PropertySource(value={"file:${INFOSYS_CONFIG}/eurekaconsumer.properties"})
    @ComponentScans({@ComponentScan("com.*.platform.business.**")})
    public class EurekaconsumerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaconsumerApplication.class, args);
        }
    }
    

    然后就是调用服务了,
    调用服务就比较简单了,只需要在service 接口上添加 注解@FeignClient,加上你需要调用服务的服务名
    service代码如下:

    @Component
    @FeignClient(value= "SPRING-CLOUD-ADMIN")
    public interface HelloService {
        @RequestMapping(value = "/hello",method = RequestMethod.GET)
        String hello(@RequestParam(value = "name") String name);
    }
    

    在写一个controller,代码如下:

    @RestController
    public class ConsumerController {
    
        @Resource
        HelloService helloService ;
    
        @RequestMapping("/hello/{name}")
        public String index(@PathVariable("name") String name) {
            return helloService .hello(name);
        }
    }
    

    启动controller服务,发现报错了HelloService 获取不到,那就肯定是没扫描到包,然后在启动类注解后面添加路径:
    @EnableFeignClients(basePackages = {"com.*.platform.business.service"})
    启动成功
    访问;http://localhost:9005/hello/%E6%9D%8E%E7%A3%8A

    image.png
    成功!
    一个简单的eureka服务就搭好了

    相关文章

      网友评论

          本文标题:springcloud之eureka

          本文链接:https://www.haomeiwen.com/subject/pbfoaqtx.html