從零開始搭建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本地專案內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!