springcloud 项目基础工程搭建 【springcloud系列1】-爱代码爱编程
SpringCloud 大型系列课程正在制作中,欢迎大家关注与提意见。
程序员每天的CV 与 板砖,也要知其所以然,本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCloud 微服务系列项目开发
1 Idea 创建 Maven 项目
创建好后,我们反多余的文件夹删除,留下空的 maven 工程
对应的pom.xml 中只留下基础的配置
<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.biglead</groupId>
<artifactId>biglead-api</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.4</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java-version>17</java-version>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
</properties>
</project>
2 SpringCloud 版本
- GA:General Availability,正式发布的版本,官方推荐使用此版本。在国外都是用GA来说明release版本的。
- PRE::预览版,内部测试版,主要是给开发人员和测试人员测试和找BUG用的,不建议使用。
- SNAPSHOT:快照版,可以稳定使用,且仍在继续改进版本。
- SR+数字:该种形式也是正式发布的稳定版本,表示在是大版本的第几个正式版本。
本系列使用 2020.0.2 版本 。
导入基本使用的依赖如下:
<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.biglead</groupId>
<artifactId>biglead-api</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.4</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java-version>17</java-version>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<spring-boot.version>2.4.4</spring-boot.version>
<spring-cloud.version>2020.0.2</spring-cloud.version>
<spring-cloud-alibaba.version>2020.0.RC1</spring-cloud-alibaba.version>
<mysql.version>5.1.47</mysql.version>
<mybatis.version>2.1.1</mybatis.version>
<amqp.version>2.4.4</amqp.version>
<elasticsearch.version>7.12.1</elasticsearch.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- springCloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- springboot web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring-boot.version}</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
2.1 dependencyManagement 标签
在父级的 pom 中的 dependencyManagement 标签 ,是对所依赖jar包进行声明依赖,也就是这里的声明依赖的版本,继承该父项目的子项目,不会直接引入dependencyManagement管理的jar包,在子项目中使用到对应的依赖时,可不写版本号。
3 子项目 UserService 服务创建
比如我这里创建的服务叫 user-service
点击Next创建完成后,在父工程的 pom.xml 中添加模块依赖
<modules>
<module>user-service</module>
</modules>
然后整理一下刚刚创建的user-service服务的 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">
<modelVersion>4.0.0</modelVersion>
<!-- 依赖修改为父工程-->
<parent>
<artifactId>biglead-api</artifactId>
<groupId>com.biglead</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>user-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>user-service</name>
<description>user-service</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
然后 clean 一下项目,重新加载一下 pom 依赖
然后修改 配置文件 application.properties 为 application.yml ,并添加基础的配置如下:
server:
port: 8001
spring:
datasource:
url: jdbc:mysql://mysql:3306/spring_cloud?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8&useSSL=false
username: testadmin
password: qwert.12345
driver-class-name: com.mysql.jdbc.Driver
application:
#对应pom中的配置的name
name: '@project.name@'
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
#mybatis
mybatis-plus:
mapper-locations: classpath*:**/sqlmap/*.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.biglead.userservice.pojo
configuration:
map-underscore-to-camel-case: true
#缓存
cache-enabled: false
call-setters-on-nulls: true
#配置日志 log-impl:日志实现
log-impl : org.apache.ibatis.logging.stdout.StdOutImpl
然后测试启动项目
4 用户信息查询
在这里使用 mybatis-plus 来查询数据库的用户信息,基本的集成过程可以查看这里
SpringBoot MyBatis-Plus 集成 【SpringBoot系列5】
数据库中对应的用户数据如下
UserController 中的接口信息配置
import com.biglead.userservice.pojo.UserInfo;
import com.biglead.userservice.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
private UserService userService;
@Value("${server.port}")
private String serverPort;
/**
* 路径: /user/110
*
* @param id 用户id
* @return 用户
*/
@GetMapping(value = "/{id}")
public UserInfo queryById(@PathVariable("id") Long id) {
log.info("查询用户信息 port {}",serverPort);
return userService.queryById(id);
}
}
UserService.java 的定义
import com.baomidou.mybatisplus.extension.service.IService;
import com.biglead.userservice.pojo.UserInfo;
public interface UserService extends IService<UserInfo> {
/**查询用户详情*/
UserInfo queryById(Long id);
}
UserServiceImpl.java 的定义
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.biglead.userservice.mapper.UserMapper;
import com.biglead.userservice.pojo.UserInfo;
import com.biglead.userservice.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class UserServiceImpl extends ServiceImpl<UserMapper, UserInfo> implements UserService {
/**
* 查询用户详情
*
* @param id
*/
@Override
public UserInfo queryById(Long id) {
return this.getById(id);
}
}
UserMapper.java 的定义
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.biglead.userservice.pojo.UserInfo;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<UserInfo> {
}
然后启动项目,大家可以查看一下项目的目录结构如下
然后在 postman 中访问 http://localhost:8001/user/1
然后也可以看到控制台日志如下:
5 子项目 order-service 创建
重复本文章 第三小节的创建 SpringBoot的过程,创建一个order-service服务,然后在 父项目中添加 order-service 的配置
然后 maven 重新 reload 一下,重复本文章 第四小节的过程 ,写一个订单服务的基本的查询,然后启动 订单服务如下 :
订单详情的表数据如下
然后 访问接口 http://{{host}}:9001/order/109 查询订单的数据如下
SpringCloud 微服务基本工程搭建完成
本文章是系列文章,代码过多,可以查看源码如下:
https://gitee.com/android.long/spring-cloud-biglead/tree/master/biglead-api-01/biglead-api-01
有兴趣可以关注一下 公众号 biglead