從零開始搭建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的項目基本架構搭建成功!
在這裏插入圖片描述




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章