springclound基础模块

一、SpringClound简介:

springcloud中文网:https://www.springcloud.cc/
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、服务注册与服务发现:

springcloud官网:https://spring.io/projects/spring-cloud.

服务注册:就是将提供某个服务的模块信息(通常是这个服务的ip和端口)注册到1个公共的组件上去(比如: zookeeper\consul)。

服务发现:就是新注册的这个服务模块能够及时的被其他调用者发现。不管是服务新增和服务删减都能实现自动发现。
在这里插入图片描述

三、Springboot和Springcloud的版本对应选择:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

pom中的依赖:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

四、SpringCloud父工程创建:

父maven工程步骤:

在这里插入图片描述

在这里插入图片描述

第1步:创建新的工程:(模板选择maven-archetype-site)

File–>New–>Project–>Maven :

在这里插入图片描述
maven提供的41个骨架原型分别是:

1: appfuse-basic-jsf (创建一个基于Hibernate,Spring和JSF的Web应用程序的原型)
2: appfuse-basic-spring(创建一个基于Hibernate,Spring和Spring MVC的Web应用程序的原型)
3: appfuse-basic-struts(创建一个基于Hibernate,Spring和Struts 2的Web应用程序的原型)
4: appfuse-basic-tapestry(创建一个基于Hibernate,Spring 和 Tapestry 4的Web应用程序的原型)
5: appfuse-core(创建一个基于Hibernate,Spring 和 XFire的jar应用程序的原型)
6: appfuse-modular-jsf(创建一个基于Hibernate,Spring和JSF的模块化应用原型)
7: appfuse-modular-spring(创建一个基于Hibernate, Spring 和 Spring MVC 的模块化应用原型)
8: appfuse-modular-struts(创建一个基于Hibernate, Spring 和 Struts 2 的模块化应用原型)
9: appfuse-modular-tapestry (创建一个基于 Hibernate, Spring 和 Tapestry 4 的模块化应用原型)
10: maven-archetype-j2ee-simple(一个简单的J2EE的Java应用程序)
11: maven-archetype-marmalade-mojo(一个Maven的 插件开发项目 using marmalade)
12: maven-archetype-mojo(一个Maven的Java插件开发项目)
13: maven-archetype-portlet(一个简单的portlet应用程序)
14: maven-archetype-profiles()
15:maven-archetype-quickstart()
16: maven-archetype-site-simple(简单的网站生成项目)
17: maven-archetype-site(更复杂的网站项目)
18:maven-archetype-webapp(一个简单的Java Web应用程序)
19: jini-service-archetype(Archetype for Jini service project creation)
20: softeu-archetype-seam(JSF+Facelets+Seam Archetype)
21: softeu-archetype-seam-simple(JSF+Facelets+Seam (无残留) 原型)
22: softeu-archetype-jsf(JSF+Facelets 原型)
23: jpa-maven-archetype(JPA 应用程序)
24: spring-osgi-bundle-archetype(Spring-OSGi 原型)
25: confluence-plugin-archetype(Atlassian 聚合插件原型)
26: jira-plugin-archetype(Atlassian JIRA 插件原型)
27: maven-archetype-har(Hibernate 存档)
28: maven-archetype-sar(JBoss 服务存档)
29: wicket-archetype-quickstart(一个简单的Apache Wicket的项目)
30: scala-archetype-simple(一个简单的scala的项目)
31: lift-archetype-blank(一个 blank/empty liftweb 项目)
32: lift-archetype-basic(基本(liftweb)项目)
33: cocoon-22-archetype-block-plain([http://cocoapacorg2/maven-plugins/])
34: cocoon-22-archetype-block([http://cocoapacorg2/maven-plugins/])
35:cocoon-22-archetype-webapp([http://cocoapacorg2/maven-plugins/])
36: myfaces-archetype-helloworld(使用MyFaces的一个简单的原型)
37: myfaces-archetype-helloworld-facelets(一个使用MyFaces和Facelets的简单原型)
38: myfaces-archetype-trinidad(一个使用MyFaces和Trinidad的简单原型)
39: myfaces-archetype-jsfcomponents(一种使用MyFaces创建定制JSF组件的简单的原型)
40: gmaven-archetype-basic(Groovy的基本原型)
41: gmaven-archetype-mojo(Groovy mojo 原型)

第2步:聚合总父工程名字:

父maven工程的名字: com.fan.springcloud

在这里插入图片描述

第3步:maven选择版本:(使用本地的maven配置)
在这里插入图片描述
第4步:然后选择自动导入:
在这里插入图片描述
在这里插入图片描述

第5步:设置字符编码:
在这里插入图片描述

第6步:注解生效激活:
在这里插入图片描述

第7步:java编译版本选jdk8:

在这里插入图片描述
第8步:file type 过滤:
在这里插入图片描述

五、父工程依赖版本号管理:

父工程的jar包管理:通过标签dependencyManagement来实现各种jar包版本的统一控制
在这里插入图片描述
完整的pom.xml如下:

<?xml version="1.0" encoding="UTF-8"?>

<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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>com.fan.springcloud</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <!--统一的jar版本-->
  <properties>
    <project.build.sourceEnconding>UTF-8</project.build.sourceEnconding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.12</junit.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.18.20</lombok.version><!--注意,这里不能选择太过时的版本-->
    <mysql.version>8.0.22</mysql.version>
    <druid.version>1.1.21</druid.version><!--注意,这里不能选择太过时的版本-->
    <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
  </properties>
  <!--子模块继承之后,提供作用:锁定版本——子模块不用写版本号和groupId-->
  <dependencyManagement>
    <dependencies>
      <!--spring boot 2.2.2-->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.2.2.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--spring cloud Hoxton.SR1-->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.SR1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--spring cloud alibaba 2.1.0.RELEASE-->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.1.0.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
     <!--(mysql数据库驱动版本控制)-->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
    
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.version}</version>
      </dependency>
      <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis.spring.boot.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
        <!-- 可选的,不进行依赖传递 -->
        <optional>true</optional>
      </dependency>
    </dependencies>

  </dependencyManagement>

  <build>
    <plugins>
     <!-- Spring Boot的Maven插件 -->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <fork>true</fork>
          <addResources>true</addResources>
        </configuration>
      </plugin>
      <!-- 编译的jdk插件 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <!-- maven compiler plugin版本必须正确否则下面设置的JDK版本不起作用 -->
        <version>3.5.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

Maven插件系列之spring-boot-maven-plugin:

Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。

Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。
Spring Boot Maven plugin的最新版本为2017.6.8发布的1.5.4.RELEASE,要求Java 8, Maven 3.2及以后。

Spring Boot Maven plugin的5个Goals

spring-boot:repackage,默认goal。在mvn package之后,再次打包可执行的jar/war,同时保留mvn package生成的jar/war为.origin
spring-boot:run,运行Spring Boot应用
spring-boot:start,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
spring-boot:stop,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
spring-boot:build-info,生成Actuator使用的构建信息文件build-info.properties

父工程的作用:锁定版本号,进行依赖管理:

在这里插入图片描述

聚合统一的jar包版本管理,达到了所有子项目都整齐划一的版本。也方便修改。

在这里插入图片描述

在这里插入图片描述
发布父工程到仓库:先clean 后install,这样子工程才能继承父工程

在这里插入图片描述
在这里插入图片描述

六、订单和支付模块:

支付模块构建:

在这里插入图片描述
在这里插入图片描述

第一步:创建maven模块:cloud-provider-payment8001
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
第二步:修改pom:

actuator:这是springboot程序的监控系统,可以实现健康检查,info信息等。在使用之前需要引入spring-boot-starter-actuator,并做简单的配置即可。

当其他项目继承本项目时,如果dependences中加上了optional-true-optional,表示当前依赖不向下传递。

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>com.fan.springcloud</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-provider-payment8001</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.17</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

</project>

第三步:整合Druid连接池:

1.2.1 添加druid启动依赖

<dependency>
   		<groupId>com.alibaba</groupId>
   		<artifactId>druid-spring-boot-starter</artifactId>
   		<version>1.1.13</version>
</dependency>

1.2.2 配置数据源
打开application.properties配置文件,修改连接池内容配置。

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

yml:

server:
  port: 8001  #服务端口号,建议一定有

spring:
  application:
    name: cloud-payment-service #微服务名称,建议有
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource #当前数据源操作类型
    driver: com.mysql.cj.jdbc.Driver  #mysql驱动包
    url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
    username: root
    password: root
mybatis-plus:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.fan.springcloud.entity #所在entity别名类所在的包

第四步:主启动类PaymentMain8001 :

package com.fan.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class PaymentMain8001 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8001.class,args);
    }
}

在这里插入图片描述

第五步:开始业务逻辑:

在这里插入图片描述

在这里插入图片描述

数据库表:

在这里插入图片描述

实体类:
在这里插入图片描述

通用的json实体类:
在这里插入图片描述

dao层:

在这里插入图片描述

mybatis的映射文件:

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fan.springcloud.mapper.PaymentMapper">
    <!--public User getUser(Integer id);-->

    <resultMap id="BaseResultMap" type="com.fan.springcloud.entity.Payment">
        <id column="id" property="id" jdbcType="BIGINT"></id>
        <result column="serial" property="serial" jdbcType="VARCHAR"></result>
    </resultMap>
    <select id="getPaymentById" resultMap="BaseResultMap">
    select * from payment where id=#{id};
    </select>

    <insert id="create" useGeneratedKeys="true" keyProperty="id"> /*使用主键自增,和指定哪个是主键keyProperty*/
        insert into payment (serial) values (#{serial});
    </insert>
</mapper>

注意:
jdbcType :JDBC 类型,所支持的 JDBC 类型参见这个表格之后的“支持的 JDBC 类型”。 只需要在可能执行插入、更新和删除的且允许空值的列上指定 JDBC 类型。这是 JDBC 的要求而非 MyBatis 的要求。如果你直接面向 JDBC 编程,你需要对可以为空值的列指定这个类型。
在这里插入图片描述

service接口和实现类:

在这里插入图片描述

controller:

在这里插入图片描述
在这里插入图片描述

测试:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

post的插入操作:使用postman 测试:
在这里插入图片描述

在这里插入图片描述

增加热部署依赖devtools:放到子工程中的pom

        <dependency><!--热部署-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

增加maven插件到父pom:
在这里插入图片描述

<plugins>
      <!--maven插件-->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <fork>true</fork>
          <addResources>true</addResources>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <!-- maven compiler plugin版本必须正确否则下面设置的JDK版本不起作用 -->
        <version>3.5.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>

开启自动编译:
在这里插入图片描述

消费者订单模块:

第一步,创建模块:
创建maven模块。
第二步,写pom:将服务端的子项目pom赋值过来即可
第三步,写yml:

客户端使用80端口:
在这里插入图片描述
在这里插入图片描述
第四步,主启动类
com.fan.springcloud.OrderMain80

package com.fan.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ConsumerMain80 {
    public static void main(String[] args) {
        /*SpringApplication注意不是springboot*/
        SpringApplication.run(ConsumerMain80.class,args);
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

controller:消费端只有这一个
在这里插入图片描述

在这里插入图片描述

启动两个服务:
测试:
localhost/consumer/payment/get/1
在这里插入图片描述
在这里插入图片描述
测试写:
注意这里提供者哪里的写方法映射参数需要加responbody注解:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
IDEA中设置Run Dashboard:
DEA2020.1:
1. View -> Tool Window -> Services
2. 点击加号 -> Run Configeration Type -> Spring Boot;

七、重构工程:

在这里插入图片描述

在这里插入图片描述
将公共模块用maven打包到公共库:

在这里插入图片描述

删除子模块的实体类:在子模块pom中引入依赖:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值