從零開(kāi)始搭建springboot+springcloud+mybatis本地項(xiàng)目全過(guò)程(圖解)
記錄一下從零開(kāi)始搭建一個(gè)springboot+springcloud+mybatis本地項(xiàng)目的demo的過(guò)程。純代碼小白一枚,若有不足或錯(cuò)誤之處,歡迎廣大朋友指出!
開(kāi)發(fā)環(huán)境準(zhǔn)備:
IDE:IntelliJ Idea 2019.3
數(shù)據(jù)庫(kù):mysql 8.0.2.2
SpringBoot版本:2.2.0.RELEASE
SpringCloud版本:Hoxton.RELEASE
一、創(chuàng)建一個(gè)新的Idea項(xiàng)目
打開(kāi)Idea,單擊New->File->Project,選擇Maven,直接下一步

輸入我們的項(xiàng)目名,我這里起名為pam,單擊Finish完成創(chuàng)建

二、右鍵單擊project下的父節(jié)點(diǎn)
->New->Module,創(chuàng)建一個(gè)注冊(cè)中心服務(wù)端的Module,輸入一下名稱(chēng),我這里以pam-server為例,直接選finish;
同理再創(chuàng)建一個(gè)客戶(hù)端的Module,輸入一下名稱(chēng),我這里以pam-service為例,直接選finish,結(jié)構(gòu)如圖所示:

三、單擊File
->Settings->Maven,配置一下本地的maven,單擊OK

四、在最外層pom文件
引入一下springboot、springcloud及mybatis的依賴(lài)。這里引入的springboot版本為2.2.0-RELEASE,與之相對(duì)應(yīng)的springcloud版本為Hoxton.RELEASE。注意二者版本需要相適配,否則會(huì)啟動(dòng)報(bào)錯(cuò)。這里額外引入了幾個(gè)常用依賴(lài),直接在maven單擊一下刷新,倉(cāng)庫(kù)即可在線將所需依賴(lài)下載進(jìn)去。
<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>
<!--注冊(cè)中心相關(guān)依賴(lài)-->
<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>
五、創(chuàng)建如圖所示的目錄結(jié)構(gòu):
①編寫(xiě)注冊(cè)中心,注冊(cè)中心目錄結(jié)構(gòu):

編寫(xiě)WebApplication啟動(dòng)類(lèi),添加注解@EnableEurekaServer和@SpringBootApplication,我這里想做一個(gè)純注冊(cè)中心,不與數(shù)據(jù)庫(kù)掛鉤,所以增加了一個(gè)exclude = DataSourceAutoConfiguration.class,啟動(dòng)項(xiàng)目時(shí)不自動(dòng)與數(shù)據(jù)庫(kù)連接,若想讓注冊(cè)中心也連接數(shù)據(jù)庫(kù),這個(gè)exclude也可以不要。如圖所示:

編寫(xiě)application.yml
server:
port: 8081
eureka:
instance:
hostname: 127.0.0.1
server:
enable-self-preservation: false # 關(guān)閉自我保護(hù)模式(默認(rèn)為打開(kāi))
eviction-interval-timer-in-ms: 600000 # 續(xù)期時(shí)間,即掃描失效服務(wù)的間隔時(shí)間 一分鐘,本地測(cè)試不需這么頻繁,調(diào)為1小時(shí)
client:
register-with-eureka: false #自己就是注冊(cè)中心,不用注冊(cè)自己
fetch-registry: false #是否去注冊(cè)中心獲取其他服務(wù)的地址
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
application:
name: xinrong
freemarker:
prefer-file-system-access: false
編寫(xiě)bootstrap.yml:
spring: cloud: config: enabled: false
編寫(xiě)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
②編寫(xiě)消費(fèi)者pam-service,消費(fèi)者目錄結(jié)構(gòu):

編寫(xiě)消費(fèi)者啟動(dòng)類(lèi)PamApplication.java,添加注解@MapperScan(basePackages = {“com.xinrong.pam.*.mapper”})
含義:mybatis中Mapper文件對(duì)應(yīng)的包,啟動(dòng)項(xiàng)目時(shí)會(huì)自動(dòng)掃描

編寫(xiě)消費(fèi)者application.yml:
server: port: 8088 #端口號(hào)8088 eureka: instance: hostname: 127.0.0.1 server: enable-self-preservation: false # 關(guān)閉自我保護(hù)模式(默認(rèn)為打開(kāi)) eviction-interval-timer-in-ms: 600000 # 續(xù)期時(shí)間,即掃描失效服務(wù)的間隔時(shí)間 一分鐘 client: register-with-eureka: true #注冊(cè)到注冊(cè)中心 fetch-registry: true #是否去注冊(cè)中心獲取其他服務(wù)的地址:是 serviceUrl: defaultZone: http://127.0.0.1:8081/eureka/ #注冊(cè)中心地址 mybatis: mapper-locations: mapper/* #mybatis映射文件路徑 config-location: classpath:/mybatis/mybatis-config.xml #mybatis配置文件路徑 spring: application: name: pam #項(xiàng)目名 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
在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)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) );
插入一條測(cè)試數(shù)據(jù):

編寫(xiě)user文件夾,創(chuàng)建五層架構(gòu),在domain中創(chuàng)建一個(gè)實(shí)體類(lèi)User:

創(chuàng)建controller類(lèi)接口及實(shí)現(xiàn)類(lèi),添加@RestController注解,在接口上添加@RequestMapping注解:
接口:

實(shí)現(xiàn)類(lèi):

同理,添加service接口及實(shí)現(xiàn)類(lèi),注意在實(shí)現(xiàn)類(lèi)上添加@Service注解:


創(chuàng)建mapper文件,編寫(xiě)Mapper接口,添加@Repository注解:

在resources中創(chuàng)建mybatis文件夾,編寫(xiě)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> <!-- 設(shè)置駝峰匹配 --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!--增加日志輸出--> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings> </configuration>
編寫(xiě)mapper文件,創(chuàng)建一個(gè)User類(lèi)的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代碼編寫(xiě)完畢,首先啟動(dòng)注冊(cè)中心pam_server,啟動(dòng)成功,通過(guò)地址http://127.0.0.1:8081/,成功查看到了注冊(cè)中心管理界面:

啟動(dòng)服務(wù)pam_service:

啟動(dòng)成功,再次查看注冊(cè)中心管理界面,可以看到pam服務(wù)成功注冊(cè)到了注冊(cè)中心:

通過(guò)瀏覽器地址欄鍵入“http://127.0.0.1:8088/controller/pam/user/getAll”,成功查詢(xún)到了庫(kù)中錄入的測(cè)試數(shù)據(jù)。至此,springBoot的項(xiàng)目基本架構(gòu)搭建成功!

到此這篇關(guān)于從零開(kāi)始搭建springboot+springcloud+mybatis本地項(xiàng)目全過(guò)程(圖解)的文章就介紹到這了,更多相關(guān)搭建springboot+springcloud+mybatis本地項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring Cloud 配置中心多環(huán)境配置bootstrap.yml的實(shí)現(xiàn)方法
- 解決springboot與springcloud版本兼容問(wèn)題(附版本兼容表)
- 將Springboot項(xiàng)目升級(jí)成Springcloud項(xiàng)目的圖文教程
- SpringCloud解決Feign異步回調(diào)問(wèn)題(SpringBoot+Async+Future實(shí)現(xiàn))
- SpringBoot項(xiàng)目改為SpringCloud項(xiàng)目使用nacos作為注冊(cè)中心的方法
- SpringBoot(cloud)自動(dòng)裝配bean找不到類(lèi)型的問(wèn)題
- springboot集成springCloud中g(shù)ateway時(shí)啟動(dòng)報(bào)錯(cuò)的解決
- 解決nacos升級(jí)spring cloud 2020.0無(wú)法使用bootstrap.yml的問(wèn)題
- 詳解SpringBoot與SpringCloud的版本對(duì)應(yīng)詳細(xì)版
- Spring、Spring?Boot、Spring?Cloud?的區(qū)別與聯(lián)系分析
相關(guān)文章
詳解Java中的四種引用類(lèi)型(強(qiáng)軟弱虛)
Java中的引用類(lèi)型主要分為四種,分別是強(qiáng)引用、軟引用、弱引用和虛引用,這篇文章主要為大家詳細(xì)介紹了四者的使用與區(qū)別,需要的小伙伴可以參考下2023-10-10
使用多個(gè)servlet時(shí)Spring security需要指明路由匹配策略問(wèn)題
這篇文章主要介紹了使用多個(gè)servlet時(shí)Spring security需要指明路由匹配策略問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
java實(shí)現(xiàn)Composite組合模式的實(shí)例代碼
這篇文章主要介紹了java實(shí)現(xiàn)Composite組合模式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
Spring?Cloud?Alibaba微服務(wù)組件Sentinel實(shí)現(xiàn)熔斷限流
這篇文章主要為大家介紹了Spring?Cloud?Alibaba微服務(wù)組件Sentinel實(shí)現(xiàn)熔斷限流過(guò)程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Spring?循環(huán)依賴(lài)之AOP實(shí)現(xiàn)詳情
這篇文章主要介紹了Spring?循環(huán)依賴(lài)之AOP實(shí)現(xiàn)詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的盆友可以參考一下2022-07-07
Spring Boot容器加載時(shí)執(zhí)行特定操作(推薦)
這篇文章主要介紹了Spring Boot容器加載時(shí)執(zhí)行特定操作及spring內(nèi)置的事件,需要的朋友可以參考下2018-01-01
Java解析pdf格式發(fā)票的代碼實(shí)現(xiàn)
為了減少用戶(hù)工作量及誤操作的可能性,需要實(shí)現(xiàn)用戶(hù)上傳PDF格式的發(fā)票,系統(tǒng)通過(guò)解析PDF文件獲取發(fā)票內(nèi)容,并直接將其寫(xiě)入表單,以下文章記錄了功能實(shí)現(xiàn)的代碼,需要的朋友可以參考下2024-08-08
Java關(guān)鍵字volatile知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于Java關(guān)鍵字volatile知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。2021-01-01

