栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

带你快速体验一次简单的Spring Cloud的微服务(玩具服务)————附带详细代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带你快速体验一次简单的Spring Cloud的微服务(玩具服务)————附带详细代码

文章目录
  • 0 背景
  • 1 创建项目
  • 2 创建微服务
  • 附录
    • 父项目的pom.xml
    • 子pom.xml

0 背景

本文只是为了给想体验Spring Cloud微服务项目的同学快速上手的一个玩具项目(本人也并非专业的Java网页开发,也只是想花很短的时间体验一下微服务),目的只有一个体验一下Spring Cloud。这里首先创建一个简单Sprong Boot项目,下一期再进行微服务的操作,例如服务注册、负载均衡、容错保护(服务降级、服务熔断、请求缓存、请求合并、依赖隔离)等。

如果想系统的学习,可以根据相关的书籍进行学习。

1 创建项目

由于一个微服务项目中包含着很多子项目,这里首先建立一个大的父项目,然后再在父项目下创建其余的子项目。

这里开始创建父项目:

  • 1,新建一个Spring Initializr项目(如果觉得国外的服务器(Server URL)网址慢,可以换成国内的),根据自己情况填写Name(项目名称)、Group(项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构)、Artifact(项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称、Package name(包名)、Project SDD(项目的Software Development Kit)、Java(Java版本);

  • 2,选择SPring Boot的版本,然后选择相关的依赖(这里未进行任何依赖的选择,后面.pom文件中可以配置);

  • 3,创建完成后,删除其余的文件,只保留如下面第二张图的结构;


  • 4,更改maven仓库配置,设置自己的Mavne home path(maven版本),Local resposity仓库,Use setting file配置文件,然后点击Application,再点击Save;


    然后再设置pom.xml自动更新,勾选Any Changes;


  • 5,配置父pom.xml(完整配置见附录);

添加父模块:

    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.13.RELEASE
         
    

项目信息(packaging不添加,会报错'packaging' with value 'jar' is invalid):

    com.jk
    SpringCloudTest2
    1.0-SNAPSHOT
    SpringCloudTest2
    pom
    SpringCloudTest2

添加指定版本的说明:

    
        UTF-8
        UTF-8
        1.8
        0.8.3
    

添加相关依赖(这里多了一个jacoco,用于单元测试):

    
        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            org.jacoco
            jacoco-maven-plugin
            0.8.3
        
    

添加构建说明(这里主要都是jacoco的构建):

    
        
            
                org.jacoco
                jacoco-maven-plugin
                ${jacoco.version}
                
                    
                        **
@RestController
@RequestMapping(value = "/student")
public class StudentController {

    
    @GetMapping(value = "/detail")
    public Object getStudent () throws InterruptedException {
        //模拟超时(用于显示熔断器Hystrix的作用)
//        TimeUnit.SECONDS.sleep(6);

        StudentEntity student = new StudentEntity();
        student.setName("张三");
        student.setAge(18);
        student.setRemark("");
        return student;
    }

    @GetMapping(value =  "/detail2/{var}")
    public Object getStudent2(@PathVariable String var) throws InterruptedException{
        StudentEntity student = new StudentEntity();
        student.setName("张三");
        student.setAge(18);
        if (StringUtils.isNotEmpty(var) ){
            student.setRemark(var);
        }else {
            student.setRemark("");
        }


        return student;
    }
}

  • 7,编写应用网页端口和ip,文件如下的路径,把application.properities改为application.yml(properities的优先级高,yml的文件编码风格更好);

  • 7,编写单元测试用例,路径如下图(如果进行测试,可以删除test文件夹);

    编写如下代码:

package com.jk.cloud1;

import com.jk.cloud1.controller.StudentController;
import com.jk.cloud1.StudentControllerTest;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Cloud1Application.class)
public class StudentControllerTest {
    @Resource
    StudentController studentController;

    @Test
    public void test() throws InterruptedException {
        studentController.getStudent2("handsome");
    }
}
  • 8,运行启动应用(Cloud1Application.java);

  • 9,访问接口对应的网页;

至此spring cloud的项目可以说已经小小的体验了一把。

附录 父项目的pom.xml


    4.0.0

    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.13.RELEASE
         
    

    
        
            cloud-1
        
    

    com.jk
    SpringCloudTest2
    1.0-SNAPSHOT
    SpringCloudTest2
    pom
    SpringCloudTest2

    
        UTF-8
        UTF-8
        1.8
        0.8.3
    

    
        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        

        
            org.jacoco
            jacoco-maven-plugin
            0.8.3
        
    


    
        
            
                org.jacoco
                jacoco-maven-plugin
                ${jacoco.version}
                
                    
                        **/*
                    
                    SpringCloudTest/cloud-jk-1/target/jacoco.exec
                    
                    
                        
                            BUNDLE
                              
                                
                                
                                    METHOD
                                    COVEREDRATIO
                                    0.50
                                
                                
                                
                                    BRANCH
                                    COVEREDRATIO
                                    0.50
                                
                                
                                
                                    CLASS
                                    MISSEDCOUNT
                                    0
                                
                            
                        
                    
                
                
                    
                        pre-test
                        
                            prepare-agent
                        
                    
                    
                        post-test
                        test
                        
                            report
                        
                    
                
            


            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



子pom.xml


    4.0.0

    
        SpringCloudTest2
        com.jk
        1.0-SNAPSHOT
    

    cloud-1
    cloud-1
    cloud-1

    
        1.8
        UTF-8
        UTF-8
        Greenwich.SR5
    

    
        
            commons-lang
            commons-lang
            2.6
        

        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-websocket
        

        
            org.projectlombok
            lombok
            true
        

    

    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
        
    



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845433.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号