springcloud——第一个微服务工程

一、服务消费者模块

1、application.properties

server.port=81

2、控制器

package com.springcloud.controller;

import com.springcloud.enties.CommonResult;
import com.springcloud.enties.Payment;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * @author dc
 * @date 2020/7/20 - 9:57
 */
@RestController
@Slf4j
public class OrderController {

    public static final String PAYMENT_URL="http://127.0.0.1:8081";

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/consumer/first")
    public CommonResult<Payment> doFirst(Payment payment) {

        System.out.println(payment);
        System.out.println("========================");
        return restTemplate.postForObject(PAYMENT_URL + "/payment/first",
                payment, CommonResult.class);
    }

    @GetMapping("/consumer/second")
    public CommonResult<Payment> doSecond(Long id) {
        return restTemplate.getForObject(PAYMENT_URL + "/payment/second?id=" +
                id, CommonResult.class);
    }

}

3、配置类

package com.springcloud.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @author dc
 * @date 2020/7/20 - 10:01
 */

@Configuration
public class ApplicationContextConfig {



    //@Bean:相当于 <bean id="" class=""/>
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

}

4、pom文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

    <!--该模块的父项目的gav坐标-->
    <parent>
        <artifactId>springcloud</artifactId>
        <groupId>com.springcloud</groupId>
        <version>1.0.0</version>
    </parent>

    <!--该模块的版本号-->
    <modelVersion>4.0.0</modelVersion>

    <!--该模块的名字-->
    <artifactId>payment-consumer</artifactId>

    <dependencies>
        <!--springboot框架web项目起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <version>2.3.1.RELEASE</version>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <!--javabean自动生成依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!--springboot框架编译打包插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

二、服务提供者模块

1、application.properties

server.port=8081

spring.application.name=cloud-payment-service

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.driver-class-name=org.gjt.mm.mysql.Driver

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false

spring.datasource.username=duchao

spring.datasource.password=123456


mybatis.mapper-locations=classpath:mapper/*.xml

mybatis.type-aliases-package=com.springcloud.enties

2、控制器

package com.springcloud.controller;

import com.springcloud.enties.CommonResult;
import com.springcloud.enties.Payment;
import com.springcloud.service.PaymentService;
import lombok.extern.log4j.Log4j;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author dc
 * @date 2020/7/18 - 16:43
 */

@RestController
@Slf4j
public class PaymentController {

    @Resource
    private PaymentService paymentService;


    @PostMapping("/payment/first")
    //此处必须加上@RequestBody 注解,否则不能从上一个请求模块中获取payment值。
    public CommonResult doFirst(@RequestBody Payment payment) {

        System.out.println("==========================");

        System.out.println("payment = " + payment);

        int result = paymentService.addPayment(payment);

        log.info("*******插入结果:" + result);

        if (result > 0) {
            return new CommonResult(200, "插入数据库成功", result);
        }else {
            return new CommonResult(444, "插入数据库失败", null);
        }

    }


    @GetMapping("/payment/second")
    public CommonResult doSecond(Long id) {

        Payment payment = paymentService.findPayment(id);

        log.info("*******查找结果:" + payment);

        if (payment != null) {
            return new CommonResult(200, "数据查找成功", payment);
        }else {
            return new CommonResult(444, "数据查找失败", payment);
        }
    }


}

3、service层

package com.springcloud.service;


import com.springcloud.enties.Payment;
import org.apache.ibatis.annotations.Param;

/**
 * @author dc
 * @date 2020/7/18 - 16:37
 */

public interface PaymentService {

    public int addPayment(Payment payment);

    public Payment findPayment(@Param("id") Long id);
}
package com.springcloud.service;

import com.springcloud.dao.PaymentDao;
import com.springcloud.enties.Payment;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author dc
 * @date 2020/7/18 - 16:37
 */

@Service
public class PaymentServiceImpl implements PaymentService {

    @Resource
    private PaymentDao paymentDao;


    @Override
    public int addPayment(Payment payment) {
        return paymentDao.insertPayment(payment);
    }

    @Override
    public Payment findPayment(Long id) {
        return paymentDao.selectPayment(id);
    }
}

4、dao层

package com.springcloud.dao;

import com.springcloud.enties.Payment;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * @author dc
 * @date 2020/7/18 - 16:11
 */

@Mapper
public interface PaymentDao {

    public int insertPayment(Payment payment);

    public Payment selectPayment(@Param("id") Long id);

}

5、mapper文件

<?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.springcloud.dao.PaymentDao">

    <insert id="insertPayment" parameterType="Payment" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO PAYMENT(SERIAL) VALUES (#{serial})
    </insert>


    <resultMap id="baseResultMap" type="com.springcloud.enties.Payment">
        <id column="id" property="id" jdbcType="BIGINT"/>
        <id column="serial" property="serial" jdbcType="VARCHAR"/>
    </resultMap>

    <select id="selectPayment" parameterType="Long" resultMap="baseResultMap">
        SELECT * FROM PAYMENT WHERE ID = #{id}
    </select>


</mapper>

6、pom文件

<?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">

   <!--改模块的父工程的gav坐标-->
    <parent>
        <artifactId>springcloud</artifactId>
        <groupId>com.springcloud</groupId>
        <version>1.0.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <!--该子模块的名字-->
    <artifactId>payment-provider</artifactId>

    <!--该子模块所需的依赖-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>2.3.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <version>2.3.1.RELEASE</version>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
        </dependency>

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


</project>

三、父工程的pom文件

<?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>


  <!--该maven工程的gav坐标-->
  <groupId>com.springcloud</groupId>
  <artifactId>springcloud</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>

  <modules>
  <module>payment-provider</module>
  </modules>


  <!--统一管理jar包版本-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.targer>1.8</maven.compiler.targer>
    <junit.version>4.12</junit.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.16.18</lombok.version>
    <mysql.version>5.1.47</mysql.version>
    <druid.version>1.1.16</druid.version>
    <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
  </properties>

  <!--子模块继承之后,提供作用:锁定版本 + 子moudle不用写groupId和version-->
  <dependencyManagement>
    <dependencies>
      <!--springboot2.2.2依赖-->
      <dependency>
        <groupId>org.springframe.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.2.2.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <!--springcloud Hoxton.SR1版本依赖-->
      <dependency>
        <groupId>org.springframe.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.SR1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <!--springcloud alibaba 2.1.0 RELEASE版本依赖-->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.1.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <!--mysql驱动-->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>

      <!--druid依赖-->
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.version}</version>
      </dependency>

      <!--mybatis集成springboot起步依赖-->
      <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis.spring.boot.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值