SpringCloud>01 - 微服务基本工程搭建

扯淡:

由上一章可知,项目中每一个微服务都是一个可独立运行的个体,本章将搭建两个最基本的微服务,用户微服务、文章微服务,重点理解微服务工程的结构。

个人学习总结:
链接:【springboot、springcloud、docker 等,学习目录】

环境:

JDK : 1.8
开发工具:STS、IDEA(本文采用)
SpringBoot:2.0版本
持久框架:mybatis. springcloud全家桶推荐使用的是data-jpa

SpringCloud版本选择:

截图自官网:

https://spring.io/projects/spring-cloud

SpringCloud>01 - 微服务基本工程搭建_第1张图片

springboot2.0.x需要使用Finchley版本的cloud,特别有意思的是cloud的版本号是按照伦敦地铁站名A~Z编排的。

小版本:
SNAPSHOT: 快照版本,随时可能修改
M: MileStone,M1表示第1个里程碑版本,一般同时标注PRE,表示预览版版。
SR: Service Release,SR1表示第1个正式版本,一般同时标注GA:(GenerallyAvailable),表示稳定版本。

数据库创建:

1、tb_user 表:

CREATE TABLE `tb_user` (
  `id` varchar(36) NOT NULL,
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `password` varchar(32) NOT NULL COMMENT '密码,加密存储',
  `phone` varchar(20) DEFAULT NULL COMMENT '注册手机号',
  `email` varchar(50) DEFAULT NULL COMMENT '注册邮箱',
  `name` varchar(50) DEFAULT NULL COMMENT '真实姓名',
  `status` varchar(1) DEFAULT NULL COMMENT '使用状态(Y正常 N非正常)',
  `sex` varchar(1) DEFAULT '0' COMMENT '性别,1男,0女',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';

2、tb_article 表:

CREATE TABLE `tb_article` (
  `id` varchar(36) NOT NULL COMMENT 'ID',
  `userid` varchar(20) DEFAULT NULL COMMENT '用户ID',
  `title` varchar(100) DEFAULT NULL COMMENT '标题',
  `content` text COMMENT '文章正文',
  `state` varchar(1) DEFAULT NULL COMMENT '审核状态',
  `url` varchar(100) DEFAULT NULL COMMENT 'URL',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章';

工程搭建:

1、父工程搭建 springcloud_parent

1.1、工程创建

create new project ~> maven ~> next ~> artifactId、groupId

父工程仅做管理,删除 src 。

1.2、pom 文件中添加依赖:

    pom
    springcloud_parent
    springcloud 入门、组件使用

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

    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                
                Finchley.SR2
                pom
                import
            
        
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
        
            org.projectlombok
            lombok
        
    
    
    
        
            spring-snapshots
            Spring Snapshots
            https://repo.spring.io/snapshot
            
                true
            
        
        
            spring-milestones
            Spring Milestones
            https://repo.spring.io/milestone
            
                false
            
        
    
    
    
        
            spring-snapshots
            Spring Snapshots
            https://repo.spring.io/snapshot
            
                true
            
        
        
            spring-milestones
            Spring Milestones
            https://repo.spring.io/milestone
            
                false
            
        
    

2、公共模块搭建 springcloud_common 

2.1、New Module:

公共模块用于存放各个微服务共用的工具类等。

3、用户微服务 springcloud_user

3.1、工程创建,参考springcloud_common

3.2、pom 文件添加以下依赖:

    
        
        
            com.coolron
            springcloud_common
            1.0-SNAPSHOT
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.2
        
        
            mysql
            mysql-connector-java
            runtime
        
    

3.4、application.yml

server:
  port: 8081
spring:
  application:
    name: springcloud-user # 服务名称 横杠不可以是下划线

  datasource:
    url: jdbc:mysql://127.0.0.1:3306/springclouddb?useSSL=false&useUnicode=true&characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
mybatis:
  type-aliases-package: com.coolron.user.domain
  mapper-locations: classpath:mapping/user/*.xml

yml 和 properties 一样,只是格式不同而已,注意缩进和冒号后面的空格。

3.5、启动类创建:

​/**
 * @Auther: xf
 * @Date: 2018/12/18 20:24
 * @Description: 用户微服务
 */
@MapperScan("com.coolron.user.dao")
@SpringBootApplication
public class UserApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class);
    }
}

3.6、controller、service、dao 等

​@RestController
@RequestMapping(value = "/user")
public class UserController {
    @Autowired
    private UserService userService;
    @GetMapping("/list")
    public ApiResult list(){
        List list = userService.list();
        return ApiResult.ok(list);
    }
    @GetMapping("/{id}")
    public ApiResult getInfo(@PathVariable(value = "id") String id){
        User user = userService.getInfo(id);
        return ApiResult.ok(user);
    }
}

3.7、启动用户微服务,测试:

请求:http://localhost:8081/user/list

请求:http://localhost:8081/user/1

4、文章微服务springcloud_article

参考用户微服务。

4.1、启动类扫描包改变

@MapperScan("com.coolron.article.dao")
@SpringBootApplication
public class ArticleApplication {  
     ...
}

4.2、application.yml 

微服务名、mybatis别名、mapper位置改变

server:
  port: 8082
spring:
  application:
    name: springcloud-article # 服务名称 横杠不可以是下划线

  datasource:
    url: jdbc:mysql://127.0.0.1:3306/springclouddb?useSSL=false&useUnicode=true&characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

mybatis:
  type-aliases-package: com.coolron.article.domain
  mapper-locations: classpath:mapping/article/*.xml

4.3、ArticleController:

@RestController
@RequestMapping("/article")
public class ArticleController {
    @Autowired
    private ArticleService articleService;

    @GetMapping("/list")
    public ApiResult list(){
        List
 list = articleService.list();         return ApiResult.ok(list);     }     @GetMapping("/{id}")     public ApiResult getInfo(@PathVariable(value = "id") String id){         Article article = articleService.getInfo(id);         return ApiResult.ok(article);     } }​

4.4、测试:

请求:http://localhost:8082/article/list

至此,用户微服务和文章微服务搭建完毕。

代码地址:

https://gitee.com/cpla026/springcloud/tree/master/springcloud_parent/springcloud_article

https://gitee.com/cpla026/springcloud/tree/master/springcloud_parent/springcloud_user

总结:

用户微服务和文章微服务实际就是两个独立的单体工程,非常简单,重点理解什么是微服务及微服务工程结构。


个人学习分享
更多 springboot、springcloud、docker 文章,关注公众号吧:

SpringCloud>01 - 微服务基本工程搭建_第2张图片

你可能感兴趣的:(SpringCloud,系列)