美文网首页
SpringBoot快速搭建微服务【一】

SpringBoot快速搭建微服务【一】

作者: Joseph1453 | 来源:发表于2018-05-04 21:56 被阅读0次

    背景

    完成一个用户拼团的新手任务,从零开始搭建一个使用微服务架构并提供REST接口的项目,其中使用到了SpringBoot、Dubbo、Mybatis、ShardingJDBC、zebra、lion、cat等框架和中间件,现在回顾总结并记录成文,方便以后参考及帮助到有需要的同学。

    目录

    1. 入门

    • 1.1 使用Gradle搭建工程
    • 1.2 SpringBoot入门
    • 1.3 ZooKeeper入门
    • 1.4 集成Dubbo框架
    • 1.5 docker安装MySQL
    • 1.6 集成Mybatis
    • 1.7 集成缓存中间件
    • 1.8 单元测试

    2. 进阶

    • 2.1 定制SpringBoot配置
    • 2.2 MySQL主从复制
    • 2.3 接入分库分表中间件
    • 2.4 接入配置中心
    • 2.5 接入监控中心

    1.1-1.3 本文
    1.4-1.8 第二篇
    2.1-2.5 第三篇

    一. 使用Gradle搭建工程

    1.1 基本概念

    构建工具,基本使用跟maven一样,项目构建文件为build.gradle。
    主要配置项为项目结构和依赖,不同于maven的是需要每个项目都配置仓库地址。

    plugins {
        id 'java'
    }
    
    group 'com.xxx'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile group: 'redis.clients', name: 'jedis', version:'2.6.0'
    
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
    
    1.2 注意点
    • 与Java10有兼容性问题,新建、导入项目时使用本地的gradle包,使用gradleW会有问题。
    • dependencies的jar包位置:
    C:\Users\XXX\.gradle\caches\modules-2\files-2.1
    
    1.3 打包
    • 创建manifest.yml
    ---
    applications:
    - name: gs-rest-service
      memory: 256M
      instances: 1
      host: rest-service
      domain: guides.spring.io
      path: build/libs/gs-rest-service-0.1.0.jar
    
    
    • 运行gradle的build命令即可打

    二. SpringBoot入门

    约定优于配置的思想,太赞了,对于初学者来说非常友好。

    传统的spring java Web应用:

    • 配置web.xml
    • 配置applicationContext.xml
    • 将应用打成war包放入应用服务器(Tomcat, Jetty等)中并运行

    而在springBoot中,以上3点都不需要

    2.1 引入依赖

    以gradle为例

    dependencies {
        compile("org.springframework.boot:spring-boot-starter-web")
        testCompile('org.springframework.boot:spring-boot-starter-test')
    }
    

    引入依赖spring-boot-starter-web,包括:

    • spring-web, spring-webmvc(Spring WebMvc框架)
    • spring-* (Spring框架)
    • tomcat-embed-* (内嵌Tomcat容器)
    • jackson (处理json数据)
    • spring-boot-autoconfigure (自动配置功能)
    2.2 应用入口
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    

    SpringApplication启动后:

      1. 在内嵌的Tomcat容器中启动一个Spring的应用上下文,监听默认的tcp端口8080(默认约定)
      1. 默认配置Spring WebMvc:
    • 2.1 Servlet容器默认的Context路径是/
    • 2.2 DispatherServlet匹配的路径(servlet-mapping中的url-patterns)是/*
    2.3 controller
    @RestController
    public class GreetingController {
    
        private static final String template = "Hello, %s!";
        private final AtomicLong counter = new AtomicLong();
    
        @RequestMapping("/greeting")
        public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
            return new Greeting(counter.incrementAndGet(),
                                String.format(template, name));
        }
    }
    

    默认使用Jackson序列化,返回json数据

    2.4 单元测试
    @RunWith(SpringRunner.class)
    @SpringBootTest
    @AutoConfigureMockMvc
    public class GreetingControllerTests {
    
        @Autowired
        private MockMvc mockMvc;
    
        @Test
        public void noParamGreetingShouldReturnDefaultMessage() throws Exception {
    
            this.mockMvc.perform(get("/greeting")).andDo(print()).andExpect(status().isOk())
                    .andExpect(jsonPath("$.content").value("Hello, World!"));
        }
    
        @Test
        public void paramGreetingShouldReturnTailoredMessage() throws Exception {
    
            this.mockMvc.perform(get("/greeting").param("name", "Spring Community"))
                    .andDo(print()).andExpect(status().isOk())
                    .andExpect(jsonPath("$.content").value("Hello, Spring Community!"));
        }
    
    }
    
    2.5 运行测试
    1. 直接run application
    2. 使用gradle的task:application的bootrun启动
    3. 使用gradle的task:build生成jar包,然后java -jar xxx.jar启动

    然后打开浏览器,localhost:8080\xxx即可访问

    三.ZooKeeper入门

    作为分布式服务的注册、调度中心使用【分布式下的多服务管理,就像管理各种习性不一的物种一样,故名ZooKeeper】

    3.1 安装
    • 下载tar包,解压
    • 重命名conf文件夹下的初始配置文件为zoo.cfg:指定端口、心跳时间、data文件路径、log文件路径
    3.2 运行
    • 启动zk的服务端
    • 可启动zk的客户端测试,或者直接启动dubbo服务注册到zk
    • zkclient

    相关文章

      网友评论

          本文标题:SpringBoot快速搭建微服务【一】

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