• 1.Spring Cloud初相识--------简单项目搭建


    开发工具:STS

    代码下载链接:GitHub管理项目

    前言:

    Springcloud 算是当前比较火的技术,一套微服务架构的技术。

    我个人对微服务的理解为:

    服务可以代表service,微服务就是小的service,或者说逻辑上不可再分的功能单元。

    比如一个电商管理平台,包括:用户管理、商品管理、订单管理、店铺管理、库存管理。。。。。。

    我们可以把这些模块抽取成单独的进程单元,方便我们进行对某一功能的集群。

    比如,我们的商品管理的业务压力较大,我们就可以集群多个商品管理单元。

    微服务架构在我的个人理解下,就是整体分布式、局部集群式架构。把资源更加合理的分配,

    也更加适合系统的弹性伸缩。

    下面我们来搭建一个简单的微服务框架。

    一、建立父工程

    1.项目结构

    2.添加依赖,控制版本一致

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      4     <modelVersion>4.0.0</modelVersion>
      5 
      6     <groupId>com.xm</groupId>
      7     <artifactId>SpringCloudDemo</artifactId>
      8     <version>0.0.1-SNAPSHOT</version>
      9     <packaging>pom</packaging>
     10 
     11     <name>SpringCloudDemo</name>
     12     <description>This is a Web about springcloud</description>
     13     
     14     
     15 
     16     <properties>
     17         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     18         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
     19         <!-- Jdk版本控制 -->
     20         <maven.compiler.source>1.8</maven.compiler.source>
     21         <maven.compiler.target>1.8</maven.compiler.target>
     22         <java.version>1.8</java.version>
     23     </properties>
     24 <dependencyManagement>
     25     <dependencies>
     26         <!-- spring-cloud版本控制 -->
     27         <dependency>
     28             <groupId>org.springframework.cloud</groupId>
     29             <artifactId>spring-cloud-dependencies</artifactId>    
     30             <version>Dalston.SR1</version>
     31             <type>pom</type>
     32             <scope>import</scope>
     33         </dependency>
     34         <!-- spring-boot版本控制 -->
     35         <dependency>
     36             <groupId>org.springframework.boot</groupId>
     37             <artifactId>spring-boot-dependencies</artifactId>
     38             <version>1.5.14.RELEASE</version>
     39             <type>pom</type>
     40             <scope>import</scope>
     41         </dependency>
     42         <!-- <dependency>
     43             <groupId>org.springframework.boot</groupId>
     44             <artifactId>spring-boot-starter-web</artifactId>
     45             <version>1.5.14.RELEASE</version>
     46         </dependency> -->
     47         
     48         <dependency>
     49             <groupId>org.projectlombok</groupId>
     50             <artifactId>lombok</artifactId>
     51             <version>1.18.0</version>
     52             <scope>provided</scope>
     53         </dependency>
     54         <!-- 添加代码生成器的依赖 -->
     55         <dependency>
     56             <groupId>org.apache.velocity</groupId>
     57             <artifactId>velocity-engine-core</artifactId>
     58             <version>2.0</version>
     59         </dependency>
     60         <!--  添加MP依赖-->
     61         <dependency>
     62           <groupId>com.baomidou</groupId>
     63           <artifactId>mybatis-plus-boot-starter</artifactId>
     64           <version>2.3</version>
     65         </dependency>
     66         
     67         <dependency>
     68             <groupId>com.alibaba</groupId>
     69             <artifactId>druid</artifactId>
     70             <version>1.1.9</version>
     71         </dependency>
     72 
     73         <dependency>
     74             <groupId>mysql</groupId>
     75             <artifactId>mysql-connector-java</artifactId>
     76             <version>5.1.46</version>
     77             <scope>runtime</scope>
     78         </dependency>
     79         <!-- 修改后立即生效,热部署 -->
     80         <!-- <dependency>
     81             <groupId>org.springframework</groupId>
     82             <artifactId>springloaded</artifactId>
     83             <version>1.5.14.RELEASE</version>
     84         </dependency>
     85         <dependency>
     86             <groupId>org.springframework.boot</groupId>
     87             <artifactId>spring-boot-devtools</artifactId>
     88             <version>1.5.14.RELEASE</version>
     89         </dependency>
     90         <dependency>
     91             <groupId>org.springframework.boot</groupId>
     92             <artifactId>spring-boot-starter-test</artifactId>
     93             <version>1.5.14.RELEASE</version>
     94             <scope>test</scope> 
     95         </dependency>-->
     96     </dependencies>
     97 </dependencyManagement>
     98 
     99     <modules>
    100         <module>Api</module>
    101         <module>User</module>
    102         <module>UI</module>
    103     </modules>
    104 </project>

     3.dependencyManagement与dependencies的区别

    dependencyManagement:只控制版本,子类需要添加指定依赖,但不需要指定版本

    dependencies:子类将直接继承,无需再pom文件中配置

    二、建立Api子工程

    1.项目结构:

    2.添加依赖

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     2   <modelVersion>4.0.0</modelVersion>
     3   <parent>
     4     <groupId>com.xm</groupId>
     5     <artifactId>SpringCloudDemo</artifactId>
     6     <version>0.0.1-SNAPSHOT</version>
     7   </parent>
     8   <artifactId>Api</artifactId>
     9   <dependencies>
    10       <dependency>
    11           <groupId>org.projectlombok</groupId>
    12           <artifactId>lombok</artifactId>
    13       </dependency>
    14       <dependency>
    15           <groupId>com.baomidou</groupId>
    16           <artifactId>mybatis-plus-boot-starter</artifactId>
    17       </dependency>
    18   </dependencies>
    19 </project>

    3.添加公共实体

     1 package com.xm.springcloud.pojo;
     2 
     3 import com.baomidou.mybatisplus.enums.IdType;
     4 import java.util.Date;
     5 import com.baomidou.mybatisplus.annotations.TableId;
     6 import com.baomidou.mybatisplus.annotations.TableField;
     7 import com.baomidou.mybatisplus.annotations.TableId;
     8 import com.baomidou.mybatisplus.enums.IdType;
     9 import com.baomidou.mybatisplus.activerecord.Model;
    10 import java.io.Serializable;
    11 
    12 import com.baomidou.mybatisplus.annotations.Version;
    13 
    14 import lombok.Data;
    15 import lombok.EqualsAndHashCode;
    16 import lombok.experimental.Accessors;
    17 
    18 /**
    19  * <p>
    20  * 
    21  * </p>
    22  *
    23  * @author xm
    24  * @since 2018-07-23
    25  */
    26 @Data
    27 @EqualsAndHashCode(callSuper = false)
    28 @Accessors(chain = true)
    29 public class User extends Model<User> {
    30 
    31     private static final long serialVersionUID = 1L;
    32 
    33     /**
    34      * 主键id
    35      */
    36     @TableId(value = "id", type = IdType.AUTO)
    37     private Integer id;
    38     /**
    39      * 账号
    40      */
    41     @TableField("userName")
    42     private String userName;
    43     /**
    44      * 密码
    45      */
    46     private String password;
    47     /**
    48      * 昵称
    49      */
    50     @TableField("nickName")
    51     private String nickName;
    52     /**
    53      * 性别:0:男,1:女
    54      */
    55     private Boolean sex;
    56     /**
    57      * 生日
    58      */
    59     private Date birth;
    60 
    61 
    62     @Override
    63     protected Serializable pkVal() {
    64         return this.id;
    65     }
    66 
    67 }

     4.说明:

    Api里面放的是模块通用的类,其他模块需要引用其依赖使用。

    三、建立服务模块

    1.项目结构

    2.添加依赖

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     2   <modelVersion>4.0.0</modelVersion>
     3   <parent>
     4     <groupId>com.xm</groupId>
     5     <artifactId>SpringCloudDemo</artifactId>
     6     <version>0.0.1-SNAPSHOT</version>
     7   </parent>
     8   <artifactId>User</artifactId>
     9   <dependencies>
    10       <dependency>
    11           <groupId>org.springframework.boot</groupId>
    12           <artifactId>spring-boot-starter-web</artifactId>
    13       </dependency>
    14       <!-- <dependency>
    15           <groupId>org.springframework.boot</groupId>
    16           <artifactId>spring-boot-devtools</artifactId>
    17       </dependency> -->
    18       <dependency>
    19           <groupId>org.springframework.boot</groupId>
    20           <artifactId>spring-boot-starter-test</artifactId>
    21       </dependency>
    22       <dependency>
    23           <groupId>com.baomidou</groupId>
    24           <artifactId>mybatis-plus-boot-starter</artifactId>
    25       </dependency>
    26       <dependency>
    27           <groupId>org.apache.velocity</groupId>
    28           <artifactId>velocity-engine-core</artifactId>
    29       </dependency>
    30       <dependency>
    31           <groupId>org.projectlombok</groupId>
    32           <artifactId>lombok</artifactId>
    33       </dependency>
    34       <dependency>
    35           <groupId>com.alibaba</groupId>
    36           <artifactId>druid</artifactId>
    37       </dependency>
    38       <dependency>
    39           <groupId>mysql</groupId>
    40           <artifactId>mysql-connector-java</artifactId>
    41       </dependency>
    42       <!-- <dependency>
    43           <groupId>org.springframework</groupId>
    44           <artifactId>springloaded</artifactId>
    45       </dependency> -->
    46       <dependency>
    47           <groupId>com.xm</groupId>
    48           <artifactId>Api</artifactId>
    49           <version>0.0.1-SNAPSHOT</version>
    50       </dependency>
    51   </dependencies>
    52   <build>
    53         <plugins>
    54             <plugin>
    55                 <groupId>org.springframework.boot</groupId>
    56                 <artifactId>spring-boot-maven-plugin</artifactId>
    57             </plugin>
    58         </plugins>
    59         
    60         <resources>
    61           <resource>
    62               <directory>src/main/java</directory>
    63               <filtering>false</filtering>
    64               <includes>
    65                   <include>**/mapper/*.xml</include>
    66               </includes>
    67           </resource>
    68       </resources>
    69     </build>
    70 </project>

    3.配置文件

     1 server:
     2   port: 8001
     3 
     4 #配置日志级别
     5 logging:
     6   level:
     7     com: 
     8      xm: 
     9       springcloud: 
    10        dao: trace
    11       
    12 spring: 
    13    application:
    14       name:  user
    15    datasource:
    16     type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型
    17     driver-class-name:  com.mysql.jdbc.Driver              # mysql驱动包
    18     url: jdbc:mysql://10.1.51.31:3306/timehotel?useSSL=true         # 数据库名称
    19     username: root
    20     password: cube1501
    21     dbcp2:
    22       min-idle: 5                                           # 数据库连接池的最小维持连接数
    23       initial-size: 5                                       # 初始化连接数
    24       max-total: 5                                          # 最大连接数
    25       max-wait-millis: 200                                  # 等待连接获取的最大超时时间
    26       
    27 mybatis-plus:
    28   mapper-locations: classpath:/com/springcloud/dao/mapper/*Mapper.xml
    29   type-aliases-package: com.xm.springcloud.pojo
    30   configuration:
    31     map-underscore-to-camel-case: true
    32     cache-enabled: false

     

    4.代码结构

    5.说明:

    因为mybatisplus和热部署有冲突,在这里就取消了热部署

    四、建立UI模块

    1.项目结构

    2.添加依赖

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     2   <modelVersion>4.0.0</modelVersion>
     3   <parent>
     4     <groupId>com.xm</groupId>
     5     <artifactId>SpringCloudDemo</artifactId>
     6     <version>0.0.1-SNAPSHOT</version>
     7   </parent>
     8   <artifactId>UI</artifactId>
     9   <dependencies>
    10       <dependency>
    11           <groupId>org.springframework.boot</groupId>
    12           <artifactId>spring-boot-starter-web</artifactId>
    13       </dependency>
    14       <dependency>
    15           <groupId>com.xm</groupId>
    16           <artifactId>Api</artifactId>
    17           <version>0.0.1-SNAPSHOT</version>
    18       </dependency>
    19   </dependencies>
    20 </project>

    3.配置文件

    1 server:
    2   port: 80

    4.配置注入RestTemplate

     1 package com.xm.springcloud.config;
     2 
     3 import org.springframework.context.annotation.Bean;
     4 import org.springframework.context.annotation.Configuration;
     5 import org.springframework.web.client.RestTemplate;
     6 
     7 @Configuration
     8 public class MyConfig {
     9     @Bean
    10     public RestTemplate getRestTemplate() {
    11         return new RestTemplate();
    12     }
    13 
    14 }

    5.转发请求服务

     1 package com.xm.springcloud.controller;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.web.bind.annotation.GetMapping;
     5 import org.springframework.web.bind.annotation.PathVariable;
     6 import org.springframework.web.bind.annotation.RestController;
     7 import org.springframework.web.client.RestTemplate;
     8 
     9 import com.xm.springcloud.pojo.User;
    10 
    11 @RestController
    12 public class UserController {
    13     
    14     private static final String url = "http://127.0.0.1:8001";
    15     
    16     @Autowired
    17     private RestTemplate restTemplate;
    18     
    19     @GetMapping("/user/{id}")
    20     public User getById(@PathVariable("id")Long id) {
    21         
    22         return restTemplate.getForObject(url+"/user/"+id, User.class);
    23     }
    24 
    25 }

    6.说明

    80端口在浏览器中会自动缺省

    五、运行结果

    1.测试User模块

    2.测试UI模块


                                                  2018-07-24

  • 相关阅读:
    nmcli 命令的基本使用
    kvm虚拟机添加网卡
    Centos 7 系统详解
    Android 开发工具下载
    Android Studio升级3.6 Build窗口出现中文乱码问题解决方案
    Android 透明度alpha换算16进制
    python 安装: WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
    关于AndroidStudio 配置的默认路径的修改
    通过设置代理解决AndroidStudio无法下载gradle问题
    机器学习ROC图解读
  • 原文地址:https://www.cnblogs.com/TimerHotel/p/springcloud_01.html
Copyright © 2020-2023  润新知