一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringBoot項目從搭建到發布一條龍

SpringBoot項目從搭建到發布一條龍

2021-08-05 10:46中華田園虎 Java教程

這篇文章主要介紹了SpringBoot項目從搭建到發布一條龍,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

目前正在練手springboot+vue,因為很多步驟會遇到困難,當時查完資料解決,過一段時間就會忘記,所以決定建個系列記錄下來。因為中間很多過程已經被其他大神寫過,且這次開發經歷僅供學習分享與討論,就直接借鑒過來了,會附上原作者傳送門。本次項目準備寫文檔臨時起意,之前的步驟未作記錄,比如部署linux虛擬機,利用mycat實現讀寫分離等,這個等項目需要用到的時候再加說明。好了現在讓我們開始吧!

第二章 使用IDEA搭建一個簡單的SpringBoot項目——初始化項目

前言

該篇文章質量很高,我利用作者教程一次搭建成功,直接復制過來

創建項目

SpringBoot項目從搭建到發布一條龍

2.選擇“Spring Initializr”,點擊next;(jdk1.8默認即可)

SpringBoot項目從搭建到發布一條龍

3.完善項目信息,組名可不做修改,項目名可做修改;最終建的項目名為:test,src->main->java下包名會是:com->example->test;點擊next;

SpringBoot項目從搭建到發布一條龍

4.Web下勾選Spring Web Start,(網上創建springboot項目多是勾選Web選項,而較高版本的Springboot沒有此選項,勾選Spring Web Start即可,2.1.8版本是Spring Web);Template Englines勾選Thymeleaf;SQL勾選:MySQL Driver,JDBC API 和 MyBatis Framework三項;點擊next;

SpringBoot項目從搭建到發布一條龍

5.選擇項目路徑,點擊finish;打開新的窗口;

SpringBoot項目從搭建到發布一條龍
SpringBoot項目從搭建到發布一條龍

6.剛創建好的項目目錄結構

![在這里插入圖片描述](https://img-blog.csdnimg.cn/20210204142502112.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3llamlhbGlhbmd6aQ==,size_16,color_FFFFFF,t_70)

7.點擊右側的Maven,點擊設置(扳手圖標)進行項目Maven倉庫的配置;

SpringBoot項目從搭建到發布一條龍

8.(1)選擇本地Maven路徑;(2)勾選配置文件后邊的選項,然后修改為本地Maven的配置文件,它會根據配置文件直接找到本地倉庫位置;

SpringBoot項目從搭建到發布一條龍

9.配置完后,如果沒有自動導包,可以點擊左上角重新導包按鈕,或者呢個下載按鈕,選擇下載所有源文件和文檔

SpringBoot項目從搭建到發布一條龍

10.在templates文件下新建index.html頁面,作為啟動的初始頁面;

SpringBoot項目從搭建到發布一條龍

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>hello</title>
  6. </head>
  7. <body>
  8. 你好!初學者,我是SpringBoot的簡單啟動頁面!
  9. </body>
  10. </html>

11.在com.example.test下新建controller文件夾,在controller文件夾下建一個簡單的helloController類;(Controller類要添加@Controller注解,項目啟動時,SpringBoot會自動掃描加載Controller)

SpringBoot項目從搭建到發布一條龍

  1. package com.example.test.controller;
  2.  
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5.  
  6. @Controller
  7. public class HelloController {
  8.  
  9. @RequestMapping("/index")
  10. public String sayHello(){
  11. return "index";
  12. }
  13. }

12.在resources文件夾下application中先配置DataSource基本信息,application文件有兩種文件格式,一種是以.properties為后綴,一種是以.yml為后綴的,兩種配置方式略有差別,詳情可參考這個網址:http://m.ythuaji.com.cn/article/154115.htm;在這我是用.yml后綴的文件格式。右鍵application文件選擇Refact,選擇Rename,將后綴改為yml;

SpringBoot項目從搭建到發布一條龍

  1. spring:
  2. datasource:
  3. name: test #數據庫名
  4. url: jdbc:mysql://localhost:3306/test #url
  5. username: root #用戶名
  6. password: 123456 #密碼
  7. driver-class-name: com.mysql.jdbc.Driver #數據庫鏈接驅動

13.運行項目啟動類TestApplication.java

SpringBoot項目從搭建到發布一條龍

!可以發現上面有一個WARN警告,那是因為還沒有配置編寫MyBatis的相關文件,下面會進行詳解;

2019-08-02 09:14:27.473 WARN 9120 --- [
main] o.m.s.mapper.ClassPathMapperScanner
: No MyBatis mapper was found in '[com.example.test]' package. Please check your configuration.

14.在瀏覽器中輸入localhost:8080,回車顯示初始的index界面;到這項目的初步搭建已經完成,下面可以下一些簡單的業務邏輯,比如從數據庫獲取信息,登錄之類的簡單功能;

SpringBoot項目從搭建到發布一條龍

15.在進行下一步編寫時,我們先來鏈接一下數據庫;點擊右側的Database,點“加號”,新建數據庫鏈接;

SpringBoot項目從搭建到發布一條龍

16.填寫數據庫相關信息,點擊Test Connection;

SpringBoot項目從搭建到發布一條龍

17.如果鏈接失敗可能是驅動的問題,點擊左上角的小扳手,進入數據庫設置界面

SpringBoot項目從搭建到發布一條龍

18.連接成功后,顯示數據庫信息,user表的基本信息也顯示了,下面就照這個來了;

SpringBoot項目從搭建到發布一條龍

19.往下的我就沒照做了,下面是我自己搭建的項目

SpringBoot項目從搭建到發布一條龍
SpringBoot項目從搭建到發布一條龍
SpringBoot項目從搭建到發布一條龍

20.我的數據庫,連的mycat。啟動三臺虛擬機,運行linux1和linux2中的mysql,運行Linux3中的mycat,關閉防火墻

SpringBoot項目從搭建到發布一條龍
SpringBoot項目從搭建到發布一條龍
SpringBoot項目從搭建到發布一條龍

SpringBoot項目從搭建到發布一條龍

21.原文傳送門
點這里

第三章 整合全局捕獲異常

前言

@ExceptionHandler 表示攔截異常
• @ControllerAdvice 是 controller 的一個輔助類,最常用的就是作為全局異常處理的切面類
• @ControllerAdvice 可以指定掃描范圍
• @ControllerAdvice 約定了幾種可行的返回值,如果是直接返回 model 類的話,需要使用 @ResponseBody 進行 json 轉換
o 返回 String,表示跳到某個 view
o 返回 modelAndView
o 返回 model + @ResponseBody

@ControllerAdvice

1. 控制層代碼

SpringBoot項目從搭建到發布一條龍

  1. import org.springframework.web.bind.annotation.RequestMapping;
  2. import org.springframework.web.bind.annotation.RestController;
  3.  
  4. @RestController
  5. public class ErrorController {
  6. // 全局捕獲異常 使用AOP技術,采用異常通知
  7. @RequestMapping("/getUser")
  8. public String getUser(int i){
  9. int j = 1/i;
  10. return "success"+j;
  11. }
  12. }

2.異常攔截代碼

SpringBoot項目從搭建到發布一條龍

  1. import org.springframework.web.bind.annotation.ControllerAdvice;
  2. import org.springframework.web.bind.annotation.ExceptionHandler;
  3. import org.springframework.web.bind.annotation.ResponseBody;
  4.  
  5. import java.util.HashMap;
  6. import java.util.Map;
  7.  
  8. @ControllerAdvice(basePackages = "com.example.test.controller")
  9. public class GlobalExceptionHandler {
  10. @ExceptionHandler(RuntimeException.class)
  11. @ResponseBody
  12. public Map<String,Object> errorResult(){
  13. Map<String,Object> errorResultMap = new HashMap<>();
  14. errorResultMap.put("errorCode","500");
  15. errorResultMap.put("errorMsg","系統錯誤!");
  16. return errorResultMap;
  17. }
  18. }

3.運行結果

SpringBoot項目從搭建到發布一條龍

第四章 springboot+log4j.yml配置日志文件

前言

此處為轉載,原作者寫的比較詳細,就一個地方有問題,去掉默認日志,加載別的日志 , 切換log4j2日志讀取應該放在spring-boot-starter下而不是spring-boot-starter-web;會無法打包

一,Maven 依賴 pom.xml配置

1. 掉默認日志,以便切換到log4j2的日志依賴

  1. <dependency>
  2. <!-- 包含 mvc,aop 等jar資源 -->
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter</artifactId>
  5. <exclusions>
  6. <!--去掉默認日志,加載別的日志 , 切換log4j2日志讀取 -->
  7. <exclusion>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-logging</artifactId>
  10. </exclusion>
  11. </exclusions>
  12. </dependency>

2. 然后添加如下兩個日志依賴

  1. <!-- 配置 log4j2 -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-log4j2</artifactId>
  5. </dependency>
  6.  
  7. <!-- 加上這個才能辨認到log4j2.yml文件 -->
  8. <dependency>
  9. <groupId>com.fasterxml.jackson.dataformat</groupId>
  10. <artifactId>jackson-dataformat-yaml</artifactId>
  11. </dependency>

二,在工程根目錄下添加 lo4g2.yml 配置文件

1, 文件存放位置

SpringBoot項目從搭建到發布一條龍

2, 配置文件內容

  1. # 共有8個級別,按照從低到高為:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF。
  2. Configuration:
  3. status: warn
  4. monitorInterval: 30
  5. Properties: # 定義全局變量
  6. Property: # 缺省配置(用于開發環境)。其他環境需要在VM參數中指定,如下:
  7. #測試:-Dlog.level.console=warn -Dlog.level.xjj=trace
  8. #生產:-Dlog.level.console=warn -Dlog.level.xjj=info
  9. - name: log.level.console
  10. value: info
  11. - name: log.path
  12. value: log
  13. - name: project.name
  14. value: opendoc
  15. - name: log.pattern
  16. value: "%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %-30.30C{1.} : %m%n"
  17. Appenders:
  18. Console: #輸出到控制臺
  19. name: CONSOLE
  20. target: SYSTEM_OUT
  21. PatternLayout:
  22. pattern: ${log.pattern}
  23. # 啟動日志
  24. RollingFile:
  25. - name: ROLLING_FILE
  26. fileName: ${log.path}/${project.name}.log
  27. filePattern: "${log.path}/historyRunLog/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
  28. PatternLayout:
  29. pattern: ${log.pattern}
  30. Filters:
  31. # 一定要先去除不接受的日志級別,然后獲取需要接受的日志級別
  32. ThresholdFilter:
  33. - level: error
  34. onMatch: DENY
  35. onMismatch: NEUTRAL
  36. - level: info
  37. onMatch: ACCEPT
  38. onMismatch: DENY
  39. Policies:
  40. TimeBasedTriggeringPolicy: # 按天分類
  41. modulate: true
  42. interval: 1
  43. DefaultRolloverStrategy: # 文件最多100個
  44. max: 100
  45. # 平臺日志
  46. - name: PLATFORM_ROLLING_FILE
  47. ignoreExceptions: false
  48. fileName: ${log.path}/platform/${project.name}_platform.log
  49. filePattern: "${log.path}/platform/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
  50. PatternLayout:
  51. pattern: ${log.pattern}
  52. Policies:
  53. TimeBasedTriggeringPolicy: # 按天分類
  54. modulate: true
  55. interval: 1
  56. DefaultRolloverStrategy: # 文件最多100個
  57. max: 100
  58. # 業務日志
  59. - name: BUSSINESS_ROLLING_FILE
  60. ignoreExceptions: false
  61. fileName: ${log.path}/bussiness/${project.name}_bussiness.log
  62. filePattern: "${log.path}/bussiness/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
  63. PatternLayout:
  64. pattern: ${log.pattern}
  65. Policies:
  66. TimeBasedTriggeringPolicy: # 按天分類
  67. modulate: true
  68. interval: 1
  69. DefaultRolloverStrategy: # 文件最多100個
  70. max: 100
  71. # 錯誤日志
  72. - name: EXCEPTION_ROLLING_FILE
  73. ignoreExceptions: false
  74. fileName: ${log.path}/exception/${project.name}_exception.log
  75. filePattern: "${log.path}/exception/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
  76. ThresholdFilter:
  77. level: error
  78. onMatch: ACCEPT
  79. onMismatch: DENY
  80. PatternLayout:
  81. pattern: ${log.pattern}
  82. Policies:
  83. TimeBasedTriggeringPolicy: # 按天分類
  84. modulate: true
  85. interval: 1
  86. DefaultRolloverStrategy: # 文件最多100個
  87. max: 100
  88. # DB 日志
  89. - name: DB_ROLLING_FILE
  90. ignoreExceptions: false
  91. fileName: ${log.path}/db/${project.name}_db.log
  92. filePattern: "${log.path}/db/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
  93. PatternLayout:
  94. pattern: ${log.pattern}
  95. Policies:
  96. TimeBasedTriggeringPolicy: # 按天分類
  97. modulate: true
  98. interval: 1
  99. DefaultRolloverStrategy: # 文件最多100個
  100. max: 100
  101. Loggers:
  102. Root:
  103. level: info
  104. AppenderRef:
  105. - ref: CONSOLE
  106. - ref: ROLLING_FILE
  107. - ref: EXCEPTION_ROLLING_FILE
  108. Logger:
  109. - name: platform
  110. level: info
  111. additivity: false
  112. AppenderRef:
  113. - ref: CONSOLE
  114. - ref: PLATFORM_ROLLING_FILE
  115. - name: bussiness
  116. level: info
  117. additivity: false
  118. AppenderRef:
  119. - ref: BUSSINESS_ROLLING_FILE
  120. - name: exception
  121. level: debug
  122. additivity: true
  123. AppenderRef:
  124. - ref: EXCEPTION_ROLLING_FILE
  125. - name: db
  126. level: info
  127. additivity: false
  128. AppenderRef:
  129. - ref: DB_ROLLING_FILE
  130. # 監聽具體包下面的日志
  131. # Logger: # 為com.xjj包配置特殊的Log級別,方便調試
  132. # - name: com.xjj
  133. # additivity: false
  134. # level: ${sys:log.level.xjj}
  135. # AppenderRef:
  136. # - ref: CONSOLE
  137. # - ref: ROLLING_FILE

3, 在application.yml引入log4j2.yml

  1. #在application.yml引入log4j2.yml
  2. logging:
  3. config: classpath:log4j2.yml

三, 不同日志枚舉類

1, 本地日志枚舉類

  1. package com.tcs.irecr.util;
  2. /**
  3. *
  4. * 本地日志枚舉
  5. * 由于配置了4個文件存放不同日志,分別為平臺日志(${project.name}_platform.log)、 業務日志(${project.name}_bussiness.log)、錯誤日志(${project.name}_exception.log)、DB 日志(${project.name}_db.log),
  6. * 文件夾外面為運行日志,不同文件日志級別不一樣,因此程序員在開發時候需要注意引入不同日志,
  7. * 也就是說開發出現的日志,程序員可以進行分類,分別調用公共方法即可。
  8. * 公共類編輯如下;
  9. *
  10. * @author 1632369
  11. *
  12. */
  13. public enum LogEnum {
  14.  
  15. BUSSINESS("bussiness"),PLATFORM("platform"),DB("db"),EXCEPTION("exception");
  16.  
  17. private String category;
  18.  
  19. LogEnum(String category) {
  20. this.category = category;
  21. }
  22.  
  23. public String getCategory() {
  24. return category;
  25. }
  26.  
  27. public void setCategory(String category) {
  28. this.category = category;
  29. }
  30.  
  31. }

四, 不同日志工具類util編輯

1, 本地日志參考類

  1. package com.tcs.irecr.util;
  2.  
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5.  
  6. /**
  7. * 本地日志參考類
  8. * @author Administrator
  9. *
  10. */
  11. public class LogUtils {
  12. /**
  13. * 獲取業務日志logger
  14. *
  15. * @return
  16. */
  17. public static Logger getBussinessLogger() {
  18. return LoggerFactory.getLogger(LogEnum.BUSSINESS.getCategory());
  19. }
  20.  
  21. /**
  22. * 獲取平臺日志logger
  23. *
  24. * @return
  25. */
  26. public static Logger getPlatformLogger() {
  27. return LoggerFactory.getLogger(LogEnum.PLATFORM.getCategory());
  28. }
  29.  
  30. /**
  31. * 獲取數據庫日志logger
  32. *
  33. * @return
  34. */
  35. public static Logger getDBLogger() {
  36. return LoggerFactory.getLogger(LogEnum.DB.getCategory());
  37. }
  38.  
  39. /**
  40. * 獲取異常日志logger
  41. *
  42. * @return
  43. */
  44. public static Logger getExceptionLogger() {
  45. return LoggerFactory.getLogger(LogEnum.EXCEPTION.getCategory());
  46. }
  47.  
  48. }

五, 運行時自動在工程目錄下生產日志目錄和日志文件

SpringBoot項目從搭建到發布一條龍

六, 原文章傳送門

點這里

第五章 Spring Boot集成lombok

前言

簡潔代碼,很實用的插件

一,Maven 依賴 pom.xml配置

1. 導入依賴包

  1. <dependency>
  2. <groupId>org.projectlombok</groupId>
  3. <artifactId>lombok</artifactId>
  4. </dependency>

2. 使用IDEA需要安裝Lombok插件,我這里已經下載好,如果沒下載安裝點擊install進行下載安裝即可

SpringBoot項目從搭建到發布一條龍

3. 實體類演示@Data----簡化get/set,toString等方法,@Slf4j------簡化 protected final Logger logger = LoggerFactory.getLogger(this.getClass());

SpringBoot項目從搭建到發布一條龍

  1. import lombok.Data;
  2.  
  3. @Data
  4. public class UserInfoDto {
  5. private Integer id;
  6. private String name;
  7. }

SpringBoot項目從搭建到發布一條龍

  1. import com.example.test.dto.UserInfoDto;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5.  
  6. @Controller
  7. @Slf4j
  8. public class helloController {
  9. @RequestMapping("/index")
  10. public String sayHello(){
  11. UserInfoDto userInfoDto = new UserInfoDto();
  12. userInfoDto.setId(1);
  13. userInfoDto.setName("天下第一");
  14. log.info("打印結果是-----"+userInfoDto.toString());
  15. return "index";
  16. }
  17. }

3.其他特性

  1. @Data 標簽,生成getter/setter toString()等方法
  2. @NonNull : 讓你不在擔憂并且愛上NullPointerException
  3. @CleanUp : 自動資源管理:不用再在finally中添加資源的close方法
  4. @Setter/@Getter : 自動生成setget方法
  5. @ToString : 自動生成toString方法
  6. @EqualsAndHashcode : 從對象的字段中生成hashCodeequals的實現
  7. @NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor
  8. 自動生成構造方法
  9. @Data : 自動生成set/get方法,toString方法,equals方法,hashCode方法,不帶參數的構造方法
  10. @Value : 用于注解final
  11. @Builder : 產生復雜的構建器api
  12. @SneakyThrows : 異常處理(謹慎使用)
  13. @Synchronized : 同步方法安全的轉化
  14. @Getter(lazy=true) :
  15. @Log : 支持各種logger對象,使用時用對應的注解,如:@Log4

第六章 Spring Boot使用@Async實現異步調用

前言

現實中校驗excel時可能會用到,之前項目校驗上傳數據時我是單開了個線程完成通知,看這次能不能替換實現。

一,Controller類

1. 啟動加上@EnableAsync

SpringBoot項目從搭建到發布一條龍

  1. import com.example.test.service.MemberService;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.scheduling.annotation.EnableAsync;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7.  
  8. /**
  9. * springboot異步調用
  10. */
  11. @RestController
  12. @Slf4j
  13. @EnableAsync // 開啟異步調用
  14. public class MemberController {
  15. @Autowired
  16. private MemberService memberService;
  17. @RequestMapping("/addMemberAndEmail")
  18. public String addMemberAndEmail(){
  19. log.info("1");
  20. String result = memberService.addMemberAndEmail();
  21. log.info("4");
  22. return "result"+result;
  23. }
  24. }

2.需要執行異步方法上加入 @Async,在方法上加上@Async之后 底層使用多線程技術

SpringBoot項目從搭建到發布一條龍

  1. import com.example.test.service.MemberService;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.scheduling.annotation.Async;
  4. import org.springframework.stereotype.Service;
  5.  
  6. @Service
  7. @Slf4j
  8. public class MemberServiceImpl implements MemberService {
  9. @Override
  10. @Async // 相當于此方法單獨開辟一個新線程執行
  11. public String addMemberAndEmail() {
  12. log.info("2");
  13. try {
  14. Thread.sleep(5000);
  15. } catch (InterruptedException e) {
  16. e.printStackTrace();
  17. }
  18. log.info("3");
  19. return "2021新年好!!!";
  20. }
  21. }

3.執行結果未加 @Async和@Async

SpringBoot項目從搭建到發布一條龍
SpringBoot項目從搭建到發布一條龍

4.執行結果加 @Async和@Async

SpringBoot項目從搭建到發布一條龍
SpringBoot項目從搭建到發布一條龍

第七章 Spring Boot不同環境配置文件

前言

注意:yml文件冒號前一定要加空格…

一.@Value的使用與開發,測試,生產環境不同配置文件使用

1. 此處僅用開發環境文件做演示,建立application-dev.yml文件

SpringBoot項目從搭建到發布一條龍

2. 配置application.yml文件

SpringBoot項目從搭建到發布一條龍

代碼

  1. spring:
  2. profiles:
  3. active: dev

3. 演示代碼controller層

  1. import com.example.test.service.MemberService;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5.  
  6. @RestController
  7. public class ValueController {
  8. @Autowired
  9. private MemberService memberService;
  10.  
  11. @RequestMapping("/testValue")
  12. public String testValue(){
  13. return memberService.readUrlbyValue();
  14. }
  15. }

4. 演示代碼servicer層

  1. import com.example.test.service.MemberService;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.scheduling.annotation.Async;
  6. import org.springframework.stereotype.Service;
  7.  
  8. @Service
  9. @Slf4j
  10. public class MemberServiceImpl implements MemberService {
  11.  
  12. @Value("${devurl}")
  13. private String devurl;
  14.  
  15. @Override
  16. @Async // 相當于此方法單獨開辟一個新線程執行
  17. public String addMemberAndEmail() {
  18. log.info("2");
  19. try {
  20. Thread.sleep(5000);
  21. } catch (InterruptedException e) {
  22. e.printStackTrace();
  23. }
  24. log.info("3");
  25. return "2021新年好!!!";
  26. }
  27.  
  28. @Override
  29. public String readUrlbyValue() {
  30. return devurl;
  31. }
  32. }

5. 運行結果

![在這里插入代碼片](https://img-blog.csdnimg.cn/20210205103858693.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3llamlhbGlhbmd6aQ==,size_16,color_FFFFFF,t_70)

第八章 Spring Boot與mybatis三劍客

前言

說實話今天我為了整合這個踩了不少坑,花了將近半天時間才成功。這里記下來避免好學者和我一樣查資料浪費時間

一.逆向生成文件–神器MyBatis-Generator

1.首先不多說pom.xml導入需要架包,這里踩坑一,我之前用的mysql-connector-java版本是8.0.12,而我的mysql版本只有 5.7.33,生成時會報 CLIENT_PLUGIN_AUTH is required錯誤,而且驅動應該改成"com.mysql.cj.jdbc.Driver"而不是"com.mysql.jdbc.Driver"。

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>druid-spring-boot-starter</artifactId>
  4. <version>1.1.10</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>mysql</groupId>
  8. <artifactId>mysql-connector-java</artifactId>
  9. <version>5.1.41</version>
  10. <scope>runtime</scope>
  11. </dependency>
  12.  
  13. <!--MBG插件-->
  14. <plugin>
  15. <groupId>org.mybatis.generator</groupId>
  16. <artifactId>mybatis-generator-maven-plugin</artifactId>
  17. </plugin>

2. 配置generatorConfig.xml文件, 配置文件中的是配置驅動的一個簡單的方式,可以通過location制定路徑。

? 元素用于指定生成一組對象的環境。例如指定要連接的數據庫,要生成對象的類型和要處理的數據庫中的表。其中的defaultModelType屬性很重要,這個屬性定義了MBG如何生成實體類,推薦使用flat模式,為每一張表只生成一個包含表所有字段的實體類。

? 指定生成實體類的生成路徑,trimStrings屬性會對查詢條件進行trim操作,默認值是false。

? 指定生成xml文件的路徑。

? 指定生成dao接口。

可以配置多個,用于指定生成數據庫中的那個表的底層類,可以指定生成的實體類的name,enableCountXXX屬性可以去除不需要的sql方法,其中columnOverride可以指定表中使用的枚舉類,ignoreColumn可以忽略表中的字段,columnOverride和ignoreColumn可以指定0個或多個。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE generatorConfiguration
  3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5.  
  6. <generatorConfiguration>
  7. <classPathEntry
  8. location="F:\repository\mysql\mysql-connector-java\5.1.41\mysql-connector-java-5.1.41.jar"/>
  9.  
  10. <context id="MysqlTables" targetRuntime="MyBatis3" defaultModelType="flat">
  11.  
  12. <property name="javaFileEncoding" value="UTF-8"/>
  13.  
  14. <commentGenerator>
  15. <property name="suppressDate" value="false"/>
  16. <property name="addRemarkComments" value="true"/>
  17. <property name="suppressAllComments" value="false"/>
  18. </commentGenerator>
  19.  
  20. <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  21. connectionURL="jdbc:mysql://192.168.70.122:8066/TESTDB?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false"
  22. userId="root"
  23. password="123456">
  24. <property name="nullCatalogMeansCurrent" value="true"/>
  25. </jdbcConnection>
  26.  
  27. <javaTypeResolver>
  28. <property name="forceBigDecimals" value="false"/>
  29. </javaTypeResolver>
  30.  
  31. <javaModelGenerator targetPackage="com.example.test.entity"
  32. targetProject="src\main\java">
  33. <property name="enableSubPackages" value="true"/>
  34. <property name="trimStrings" value="true"/>
  35. </javaModelGenerator>
  36.  
  37. <sqlMapGenerator targetPackage="mappers" targetProject="src\main\resources">
  38. <property name="enableSubPackages" value="true"/>
  39. </sqlMapGenerator>
  40.  
  41. <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.test.dao"
  42. targetProject="src\main\java">
  43. <property name="enableSubPackages" value="true"/>
  44. </javaClientGenerator>
  45.  
  46. <table schema="" tableName="user_info" enableCountByExample="true" domainObjectName="userInfo">
  47. </table>
  48.  
  49. <!-- <table schema="ins_personal_claim" tableName="claim_image_info" enableCountByExample="false" domainObjectName="ClaimImageInfo">
  50. <columnOverride column="image_type" javaType="com.jd.ins.personal.claim.domain.enums.ImageType" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
  51. <ignoreColumn column="create_time"/>
  52. <ignoreColumn column="update_time"/>
  53. </table>-->
  54.  
  55. </context>
  56. </generatorConfiguration>

3. mvn install 和點擊myBatis-Generator生產文件

SpringBoot項目從搭建到發布一條龍

4. 結果

SpringBoot項目從搭建到發布一條龍

二.mybatis plugin

1. mybatis plugin作為一款優秀的mybatis跳轉插件

SpringBoot項目從搭建到發布一條龍

2. 安裝重啟,分頁插件就不說了,項目中用別的插件。

SpringBoot項目從搭建到發布一條龍
SpringBoot項目從搭建到發布一條龍

到此這篇關于SpringBoot項目從搭建到發布一條龍的文章就介紹到這了,更多相關SpringBoot項目搭建發布內容請搜索我們以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持我們!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产草草视频 | 维修工的调教 | 欧美在线一级片 | 免费视频网 | 午夜精品网站 | 国产高清精品自在久久 | 欧美高清milf在线播放 | 欧美日韩1区2区 | 国产中文在线 | 日本人和黑人一级纶理片 | 白发在线视频播放观看免费 | 美女跪式抽搐gif动态图 | 久久久无码精品亚洲A片猫咪 | 国产专区亚洲欧美另类在线 | 欧美久在线观看在线观看 | 图片专区小说专区卡通动漫 | 免费一级特黄特色大片∵黄 | 亚洲免费视频播放 | 日韩一本在线 | 近亲乱中文字幕 | 99视频免费在线 | 亚洲欧美日韩中文高清一 | 好吊色视频988gao在线观看 | 欧美色影视 | www.色呦呦.com| 亚洲精品久久久打桩机 | 日本免费一区二区三区a区 日本免费三片在线观看 | 91精品国产高清久久久久久io | boobsmilking流奶水 | 天堂成人在线观看 | 日本公与妇中文在线 | 久久强奷乱码老熟女 | 丝袜兔女郎被啪在线观看91 | 大肥婆丰满大肥奶bbw肥 | 精品videoss另类日本 | 国产高清自拍 | 色哟哟久久 | 草嫩社区 | 果冻传媒林予曦图片 | 狠狠色96视频 | 欧美a在线 |