搭建一个微服务项目

系列文章目录

聚合继承项目



一.打开nacos微服务注册中心

找到nacos的bin目录下以单机模式打开

以单机模式运行nacos

一.父项目管理依赖

<?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>com.woniuxy</groupId>
    <artifactId>happy-life</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <!--需要添加的子模块-->
        <module>common-entity</module>
        <module>activity-release</module>
        <module>activity-data-store</module>
        <module>mall-goods</module>

    </modules>

    <!--版本号管理-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <mysql.version>5.1.35</mysql.version>
        <mybatis.spring.boot.verison>2.1.0</mybatis.spring.boot.verison>
        <druid.spring.boot.starter.version>1.1.10</druid.spring.boot.starter.version>
        <spring.boot.version>2.3.12.RELEASE</spring.boot.version>
        <spring.cloud.version>Hoxton.SR12</spring.cloud.version>
    </properties>
    <!--项目管理-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.spring.boot.starter.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.spring.boot.verison}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.7.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

二.子项目导入依赖

代码如下(示例):

<?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>happy-life</artifactId>
        <groupId>com.woniuxy</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>mall-goods</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.woniuxy</groupId>
            <artifactId>common-entity</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--spring整合web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--spring整合test-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!--mybatis整合到spring-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <!--mysql连接-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--数据库连接池durid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
        </dependency>
        <!--naco客户端依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

</project>

三.配置文件

application.yml如下:

server:
  port: 1818
spring:
  application:
    name: mall-goods
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/happylife
    username: root
    password: 123
    #配置到nacos注册中心
  cloud:
    nacos:
      server-addr: http://localhost:8848

mybatis:
  #这里是配置mapper文件的位置,能够从主配置获取到mapper下的映射文件位置,再通过set方法映射到MapperLocations属性上
  mapper-locations: classpath:/mapper/*.xml
  #配置别名,可以在resultType中简写
  type-aliases-package: com.woniuxy.happylife.entity

四.启动类

@EnableDiscoveryClient
//扫描dao层下面的,生成接口对应的实现类
@MapperScan("com.woniuxy.happylife.dao")
@SpringBootApplication
public class MallGodsApplication {
    public static void main(String[] args) {
        SpringApplication.run(MallGodsApplication.class,args);
    }
}

五.三层架构

1.controller

@RestController
@RequestMapping("/goods")
public class GoodsController {

    @Autowired
    GoodsService goodsService;

    @GetMapping("/")
    public ResponseEntity<List<MallGoods>> getAll(){
        return new ResponseEntity<List<MallGoods>>(200,"查到所有商品数据", goodsService.findAll());
    }
}

2.service

public interface GoodsService {
    List<MallGoods> findAll();
}
//注册到容器中
@Service
public class GoodsServiceImpl implements GoodsService {
    @Autowired
    GoodsDao goodsDao;
    @Override
    public List<MallGoods> findAll() {
        return goodsDao.findAll();
    }
}

3.dao

public interface GoodsDao {
    List<MallGoods> findAll();
}

生成的代理类文件如下

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.woniuxy.happylife.dao.GoodsDao">
    <select id="findAll" resultType="com.woniuxy.happylife.entity.MallGoods">
        select * from mall_goods
    </select>
</mapper>

六.后端测试

可以用postman|postwoman测试,这里使用了http测试

http-client.env.json文件如下:

{
  "dev": {
    "host": "localhost",
    "port": "1818",
    "project": "",
    "name": "value"
  }
}

goods.http文件如下:

GET http://{{host}}:{{port}}{{project}}/goods/

版权声明:本文为weixin_47729434原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。