从零开始搭建springboot+springcloud+mybatis本地项目全过程(图解)

 更新时间:2021年01月18日 09:28:38   作者:laozhang42  
这篇文章主要介绍了从零开始搭建springboot+springcloud+mybatis本地项目全过程(图解),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

记录一下从零开始搭建一个springboot+springcloud+mybatis本地项目的demo的过程。纯代码小白一枚,若有不足或错误之处,欢迎广大朋友指出!

开发环境准备:
IDE:IntelliJ Idea 2019.3
数据库:mysql 8.0.2.2
SpringBoot版本:2.2.0.RELEASE
SpringCloud版本:Hoxton.RELEASE

一、创建一个新的Idea项目

打开Idea,单击New->File->Project,选择Maven,直接下一步

在这里插入图片描述

输入我们的项目名,我这里起名为pam,单击Finish完成创建

在这里插入图片描述

二、右键单击project下的父节点

->New->Module,创建一个注册中心服务端的Module,输入一下名称,我这里以pam-server为例,直接选finish;
同理再创建一个客户端的Module,输入一下名称,我这里以pam-service为例,直接选finish,结构如图所示:

在这里插入图片描述

三、单击File

->Settings->Maven,配置一下本地的maven,单击OK

在这里插入图片描述

四、在最外层pom文件

引入一下springboot、springcloud及mybatis的依赖。这里引入的springboot版本为2.2.0-RELEASE,与之相对应的springcloud版本为Hoxton.RELEASE。注意二者版本需要相适配,否则会启动报错。这里额外引入了几个常用依赖,直接在maven单击一下刷新,仓库即可在线将所需依赖下载进去。

<dependencyManagement>
  <dependencies>
   <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.2.0.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
   </dependency>
   <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Hoxton.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
   </dependency>
  </dependencies>
 </dependencyManagement>
 <dependencies>
  <!--注册中心相关依赖-->
  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <optional>true</optional>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-test</artifactId>
   <version>5.0.4.RELEASE</version>
  </dependency>
  <dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-api</artifactId>
   <version>2.10.0</version>
  </dependency>
  <!--mysql-->
  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.16</version>
  </dependency>
  <!--mybatis-->
  <dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>2.0.0</version>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <scope>provided</scope>
  </dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-freemarker</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-cache</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-logging</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <optional>true</optional>
  </dependency>
  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-config</artifactId>
  </dependency>
  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka-server</artifactId>
   <version>1.3.1.RELEASE</version>
  </dependency>
  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-contract-stub-runner</artifactId>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-contract-verifier</artifactId>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-stream-test-support</artifactId>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-lang3</artifactId>
   <version>3.5</version>
  </dependency>
  <dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>javax.servlet-api</artifactId>
   <version>3.0.1</version>
  </dependency>
  <dependency>
   <groupId>commons-lang</groupId>
   <artifactId>commons-lang</artifactId>
   <version>2.6</version>
  </dependency>
 </dependencies>

五、创建如图所示的目录结构:

①编写注册中心,注册中心目录结构:

在这里插入图片描述

编写WebApplication启动类,添加注解@EnableEurekaServer和@SpringBootApplication,我这里想做一个纯注册中心,不与数据库挂钩,所以增加了一个exclude = DataSourceAutoConfiguration.class,启动项目时不自动与数据库连接,若想让注册中心也连接数据库,这个exclude也可以不要。如图所示:

在这里插入图片描述

编写application.yml

server:
 port: 8081
eureka:
 instance:
 hostname: 127.0.0.1
 server:
 enable-self-preservation: false  # 关闭自我保护模式(默认为打开)
 eviction-interval-timer-in-ms: 600000 # 续期时间,即扫描失效服务的间隔时间 一分钟,本地测试不需这么频繁,调为1小时
 client:
 register-with-eureka: false #自己就是注册中心,不用注册自己
 fetch-registry: false #是否去注册中心获取其他服务的地址
 serviceUrl:
  defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
 application:
 name: xinrong
 freemarker:
 prefer-file-system-access: false

编写bootstrap.yml:

spring:
 cloud:
 config:
  enabled: false

编写log4j.properties:

log4j.rootLogger=info, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

②编写消费者pam-service,消费者目录结构:

在这里插入图片描述

编写消费者启动类PamApplication.java,添加注解@MapperScan(basePackages = {“com.xinrong.pam.*.mapper”})
含义:mybatis中Mapper文件对应的包,启动项目时会自动扫描

在这里插入图片描述

编写消费者application.yml:

server:
 port: 8088 #端口号8088
eureka:
 instance:
 hostname: 127.0.0.1
 server:
 enable-self-preservation: false  # 关闭自我保护模式(默认为打开)
 eviction-interval-timer-in-ms: 600000 # 续期时间,即扫描失效服务的间隔时间 一分钟
 client:
 register-with-eureka: true #注册到注册中心
 fetch-registry: true #是否去注册中心获取其他服务的地址:是
 serviceUrl:
  defaultZone: http://127.0.0.1:8081/eureka/ #注册中心地址
mybatis:
 mapper-locations: mapper/* #mybatis映射文件路径
 config-location: classpath:/mybatis/mybatis-config.xml #mybatis配置文件路径
spring:
 application:
 name: pam #项目名
 datasource:
 url: jdbc:mysql://127.0.0.1:3306/pam?characterEncoding=utf-8&serverTimezone=Asia/Shanghai
 username: root
 password: root
 driver-class-name: com.mysql.cj.jdbc.Driver
 freemarker:
 prefer-file-system-access: false
jdbc:
 driverClass: com.mysql.jdbc.Driver
 url: jdbc:mysql://localhost:3306/pam
 username: root
 password: root

在数据库中创建一个pam_user表:

create table pam_user(
	objectId varchar(50) not null primary key ,
	userName varchar(50),
	password varchar(255),
	phoneNo varchar(20),
	sex varchar(5),
	birthDay date,
	Email varchar(50)
);

插入一条测试数据:

在这里插入图片描述

编写user文件夹,创建五层架构,在domain中创建一个实体类User:

在这里插入图片描述

创建controller类接口及实现类,添加@RestController注解,在接口上添加@RequestMapping注解:
接口:

在这里插入图片描述

实现类:

在这里插入图片描述

同理,添加service接口及实现类,注意在实现类上添加@Service注解:

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

创建mapper文件,编写Mapper接口,添加@Repository注解:

在这里插入图片描述

在resources中创建mybatis文件夹,编写mybatis-config.xml配置文件:

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
 <settings>
  <!-- 设置驼峰匹配 -->
  <setting name="mapUnderscoreToCamelCase" value="true"/>
  <!--增加日志输出-->
  <setting name="logImpl" value="STDOUT_LOGGING" />
 </settings>
</configuration>

编写mapper文件,创建一个User类的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.xinrong.pam.user.mapper.UserMapper">
 <select id="getAll" resultType="com.xinrong.pam.user.domain.User">
  select * from pam_user
 </select>
</mapper>

至此,Demo代码编写完毕,首先启动注册中心pam_server,启动成功,通过地址http://127.0.0.1:8081/,成功查看到了注册中心管理界面:

在这里插入图片描述

启动服务pam_service:

在这里插入图片描述

启动成功,再次查看注册中心管理界面,可以看到pam服务成功注册到了注册中心:

在这里插入图片描述

通过浏览器地址栏键入“http://127.0.0.1:8088/controller/pam/user/getAll”,成功查询到了库中录入的测试数据。至此,springBoot的项目基本架构搭建成功!

在这里插入图片描述

到此这篇关于从零开始搭建springboot+springcloud+mybatis本地项目全过程(图解)的文章就介绍到这了,更多相关搭建springboot+springcloud+mybatis本地项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java两个线程同时写一个文件

    java两个线程同时写一个文件

    这篇文章主要为大家详细介绍了java两个线程同时写一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java实现将图片上传到webapp路径下 路径获取方式

    Java实现将图片上传到webapp路径下 路径获取方式

    这篇文章主要介绍了Java实现将图片上传到webapp路径下 路径获取方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Netty粘包拆包问题解决方案

    Netty粘包拆包问题解决方案

    这篇文章主要介绍了Netty粘包拆包问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • java多线程Future和Callable类示例分享

    java多线程Future和Callable类示例分享

    JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。今天我们就来研究下Future和Callable的实现方法
    2016-01-01
  • Mybatis一级缓存和结合Spring Framework后失效的源码探究

    Mybatis一级缓存和结合Spring Framework后失效的源码探究

    这篇文章主要介绍了Mybatis一级缓存和结合Spring Framework后失效的源码探究,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • SpringBoot2.3集成ELK7.1.0的示例代码

    SpringBoot2.3集成ELK7.1.0的示例代码

    这篇文章主要介绍了SpringBoot2.3集成ELK7.1.0的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • kotlin和Java的相互调用示例详解

    kotlin和Java的相互调用示例详解

    Kotlin 的设计过程中就考虑到了与 Java 的互操作性。在 Kotlin 中可以直接调用既有的 Java 代码, 反过来在 Java 中也可以很流畅地使用 Kotlin 代码,下面这篇文章主要给大家介绍了关于kotlin和Java的相互调用的相关资料,需要的朋友可以参考下。
    2018-02-02
  • 详解JDK9特性之JPMS模块化

    详解JDK9特性之JPMS模块化

    JDK9引入了一个特性叫做JPMS(Java Platform Module System),也可以叫做Project Jigsaw。模块化的本质就是将一个大型的项目拆分成为一个一个的模块,每个模块都是独立的单元,并且不同的模块之间可以互相引用和调用。本文将详细介绍JDK9特性之JPMS模块化。
    2021-06-06
  • jenkins配置详细指南(附jdk多个版本配置)

    jenkins配置详细指南(附jdk多个版本配置)

    Jenkins是一款CICD(持续集成与持续交付)工具,Jenkins可以帮你在写完代码后,一键完成开发过程中的一系列自动化部署的工作,这篇文章主要给大家介绍了关于jenkins配置的相关资料,文中还附jdk多个版本配置指南,需要的朋友可以参考下
    2024-02-02
  • Java并发工具类Exchanger的相关知识总结

    Java并发工具类Exchanger的相关知识总结

    今天给大家带来的文章是Java工具类Exchanger的相关知识总结,文中有非常详细的介绍及代码示例,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06

最新评论