【SpringBoot3學習 | 第2篇】SpringBoot3整合+SpringBoot3項目打包運行

在這里插入圖片描述

文章目錄

    • 一. SpringBoot3 整合 SpringMVC
      • 1.1 配置靜態資源位置
      • 1.2 自定義攔截器(SpringMVC配置)
    • 二. SpringBoot3 整合 Druid 數據源
    • 三. SpringBoot3 整合 Mybatis
      • 3.1 Mybatis整合
      • 3.2 聲明式事務整合配置
      • 3.3 AOP整合配置
    • 四. SpringBoot3 項目打包和運行
      • 4.1 添加打包插件
      • 4.2 執行打包
      • 4.3 命令啟動

一. SpringBoot3 整合 SpringMVC

1.1 配置靜態資源位置

  • spring.resources.static-locations:配置靜態資源的位置。

    靜態資源可以是CSS、JavaScript、圖像等。
    默認情況下,Spring Boot會將靜態資源放在classpath:/static目錄下。可以通過在配置文件中設置spring.resources.static-locations屬性來自定義靜態資源的位置。

  • 默認的靜態資源路徑為:
    • classpath:/META-INF/resources/
    • classpath:/resources/
    • classpath:/static/
    • classpath:/public/
  • 在/static創建一個login.html
    在這里插入圖片描述
    此時,瀏覽器訪問路徑:http://localhost:8081/huahua/login.html
  • 在webapp目錄下創建一個register.html
    在這里插入圖片描述
    在application.yaml中配置靜態資源訪問:
    server:port: 8081servlet:context-path: /huahuaspring:web:resources:static-locations: classpath:/webapp #配置靜態資源的位置# 配置后,會覆蓋默認的靜態資源文件夾# 外部訪問靜態資源時,不需要寫靜態資源文件夾:http://localhost:8081/huahua/register.html

此時,訪問路徑:http://localhost:8081/huahua/register.html

1.2 自定義攔截器(SpringMVC配置)

  • pom.xml文件
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version></parent><groupId>com.hky</groupId><artifactId>springboot-03-base-springmvc</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>
    
  • 攔截器聲明
    package com.hky.interceptor;import jakarta.servlet.http.HttpServletRequest;
    import jakarta.servlet.http.HttpServletResponse;
    import org.springframework.web.servlet.HandlerInterceptor;/*** @author hky* @date 2024/6/29* @Description*/
    public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("request = " + request + ", response = " + response + ", handler = " + handler);return true;}
    }
  • 攔截器配置
    正常使用配置類,保證:配置類要在啟動類的同包或者子包方可生效
    package com.hky.config;import com.hky.interceptor.MyInterceptor;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** @author hky* @date 2024/6/29* @Description*/
    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor());}
    }

二. SpringBoot3 整合 Druid 數據源

  • 創建程序
  • 引入依賴:pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version></parent><groupId>com.hky</groupId><artifactId>springboot-04-base-druid</artifactId><version>1.0-SNAPSHOT</version><dependencies><!--  web開發的場景啟動器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 數據庫相關配置啟動器 jdbctemplate 事務相關--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- druid啟動器的依賴  --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId><version>1.2.18</version></dependency><!-- 驅動類--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version></dependency></dependencies></project>
    
  • 設置啟動類
  • 編寫配置文件
    spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:url: jdbc:mysql://localhost:3306/examsusername: rootpassword: H13548361722driver-class-name: com.mysql.cj.jdbc.Driver# 初始化時建立物理連接的個數initial-size: 5# 連接池的最小空閑數量min-idle: 5# 連接池最大連接數量max-active: 20# 獲取連接時最大等待時間,單位毫秒max-wait: 60000# 申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。test-while-idle: true# 既作為檢測的間隔時間又作為testWhileIdel執行的依據time-between-eviction-runs-millis: 60000# 銷毀線程時檢測當前連接的最后活動時間和當前時間差大于該值時,關閉當前連接(配置連接在池中的最小生存時間)min-evictable-idle-time-millis: 30000# 用來檢測數據庫連接是否有效的sql 必須是一個查詢語句(oracle中為 select 1 from dual)validation-query: select 1# 申請連接時會執行validationQuery檢測連接是否有效,開啟會降低性能,默認為truetest-on-borrow: false# 歸還連接時會執行validationQuery檢測連接是否有效,開啟會降低性能,默認為truetest-on-return: false# 是否緩存preparedStatement, 也就是PSCache,PSCache對支持游標的數據庫性能提升巨大,比如說oracle,在mysql下建議關閉。pool-prepared-statements: false# 要啟用PSCache,必須配置大于0,當大于0時,poolPreparedStatements自動觸發修改為true。在Druid中,不會存在Oracle下PSCache占用內存過多的問題,可以把這個數值配置大一些,比如說100max-pool-prepared-statement-per-connection-size: -1# 合并多個DruidDataSource的監控數據use-global-data-source-stat: trueserver:port: 8081
  • 實體類
    package com.hky.pojo;import lombok.Data;/*** @author hky* @date 2024/6/29* @Description*/
    @Data
    public class College {private Integer collegeID;private String collegeName;
    }
  • 編寫Controller
    package com.hky.controller;import com.hky.pojo.College;
    import lombok.Data;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;import java.util.List;/*** @author hky* @date 2024/6/29* @Description*/
    @RestController
    @RequestMapping("college")
    public class CollegeController {@Autowiredprivate JdbcTemplate jdbcTemplate;@GetMapping("list")public List<College> list(){String sql = "select * from college";List<College> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(College.class));return list;}}
  • :druid-spring-boot-3-starter雖然適配了SpringBoot3,但缺少自動裝配的配置文件,需要手動在resources目錄下創建META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,寫入內容:
    com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure
    
  • druid 1.2.20 后可不用上述配置

三. SpringBoot3 整合 Mybatis

3.1 Mybatis整合

  • 創建程序
  • 導入依賴,pom.xml:
    <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version>
    </parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.1</version></dependency><!-- 數據庫相關配置啟動器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- druid啟動器的依賴  --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId><version>1.2.18</version></dependency><!-- 驅動類--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version></dependency></dependencies>
    
  • application.yaml配置文件
    spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:url: jdbc:mysql://localhost:3306/examsusername: rootpassword: H13548361722driver-class-name: com.mysql.cj.jdbc.Driver# 初始化時建立物理連接的個數initial-size: 5# 連接池的最小空閑數量min-idle: 5# 連接池最大連接數量max-active: 20# 獲取連接時最大等待時間,單位毫秒max-wait: 60000# 申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。test-while-idle: true# 既作為檢測的間隔時間又作為testWhileIdel執行的依據time-between-eviction-runs-millis: 60000# 銷毀線程時檢測當前連接的最后活動時間和當前時間差大于該值時,關閉當前連接(配置連接在池中的最小生存時間)min-evictable-idle-time-millis: 30000# 用來檢測數據庫連接是否有效的sql 必須是一個查詢語句(oracle中為 select 1 from dual)validation-query: select 1# 申請連接時會執行validationQuery檢測連接是否有效,開啟會降低性能,默認為truetest-on-borrow: false# 歸還連接時會執行validationQuery檢測連接是否有效,開啟會降低性能,默認為truetest-on-return: false# 是否緩存preparedStatement, 也就是PSCache,PSCache對支持游標的數據庫性能提升巨大,比如說oracle,在mysql下建議關閉。pool-prepared-statements: false# 要啟用PSCache,必須配置大于0,當大于0時,poolPreparedStatements自動觸發修改為true。在Druid中,不會存在Oracle下PSCache占用內存過多的問題,可以把這個數值配置大一些,比如說100max-pool-prepared-statement-per-connection-size: -1# 合并多個DruidDataSource的監控數據use-global-data-source-stat: truemybatis:mapper-locations: classpath:/mappers/*.xml #指定xml文件的位置type-aliases-package: com.hky.pojoconfiguration:map-underscore-to-camel-case: trueauto-mapping-behavior: fulllog-impl: org.apache.ibatis.logging.slf4j.Slf4jImplserver:port: 8081servlet:context-path: /huahua
    
  • 實體類
  • Mapper接口
  • Mapper接口實現(XML)
  • 編寫三層架構代碼
  • 啟動類和掃描包配置
    @MapperScan("com.hky.mapper")
    @SpringBootApplication
    public class Main {public static void main(String[] args) {SpringApplication.run(Main.class,args);}
    }
    

3.2 聲明式事務整合配置

  • 導入依賴
     <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    
  • SpringBoot項目會自動配置一個DataSourceTransactionManager,所以只需在方法(或者類)加上 @Transactional 注解,就自動納入 Spring 的事務管理
    @Service
    public class CollegeService {@Autowiredprivate CollegeMapper collegeMapper;@Transactionalpublic List<College> query(){List<College> colleges = collegeMapper.queryAll();//int i = 1/0;return colleges;}
    }
    

3.3 AOP整合配置

  • 導入依賴
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    
  • 使用AOP注解
    @Component
    @Aspect
    @Order(5)
    public class LogAdvice {@Before("execution(* com..service.*.*(..))")public void before(JoinPoint point){String className = point.getTarget().getClass().getSimpleName();String methodName = point.getSignature().getName();System.out.println("className = "+ className + "  methodName = " + methodName + " 開始執行了!");}
    }

四. SpringBoot3 項目打包和運行

4.1 添加打包插件

<!--    SpringBoot應用打包插件-->
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

4.2 執行打包

在這里插入圖片描述
打包后,會生成一個 jar 包:
在這里插入圖片描述

4.3 命令啟動

  • 在Java環境中執行可執行的 jar 文件:
    命令格式:java -jar  [選項] [參數] <jar文件名>
    
    • -D<name>=<value>:設置系統屬性
      java -jar -Dserver.port=8080 springboot-05-base-mybatis-1.0-SNAPSHOT.jar
      
    • -X:設置JVM參數,例如內存大小、垃圾回收策略等
    • -Dspring.profiles.active=<profile>:指定Spring Boot的激活配置文件
  • 啟動和測試
    在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40544.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40544.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40544.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

k8s-第二節-常用操作

k8s命令行常用操作 k8s命令行 操作對象時都要前面聲明操作對象類型 kubectl get kubectl describe kubectl delete kubectl edit kubectl logs kubectl exec kubectl port-forward 端口轉發將pod 端口映射出來 kubectl cp 本地文件路徑:容器文件路徑 kubectl apply …

【JS場景題】判斷一個元素是否在可視區域內有哪些方法?

方法一、通過元素的位置信息和滾動條滾動的高度來判斷 前置知識 clientWidth: 元素的內容區域寬度加上左右內邊距寬度。offsetTop: 元素的上外邊框至包含元素的上內邊框之間的像素距離。document.documentElement.clientHeight&#xff1a; 獲取視口高度&#xff08;不包含滾動…

《Attention Is All You Need》解讀

一、簡介 “Attention Is All You Need” 是一篇由Ashish Vaswani等人在2017年發表的論文&#xff0c;它在自然語言處理領域引入了一種新的架構——Transformer。這個架構現在被廣泛應用于各種任務&#xff0c;如機器翻譯、文本摘要、問答系統等。Transformer模型的核心是“自…

小學vr虛擬課堂教學課件開發打造信息化教學典范

在信息技術的浪潮中&#xff0c;VR技術正以其獨特的魅力與課堂教學深度融合&#xff0c;引領著教育方式的創新與教學方法的變革。這一變革不僅推動了“以教促學”的傳統模式向“自主探索”的新型學習方式轉變&#xff0c;更為學生帶來了全新的學習體驗。 運用信息技術融合VR教學…

深度學習1

1.支持向量機Support Vector Machine&#xff08;SVM&#xff09;是一種對數據二分類的線性分類器&#xff0c;目的是尋找一個超平面對樣本進行分割&#xff0c;廣泛應用人像識別&#xff0c;手寫數字識別&#xff0c;生物信息識別。 二維空間分割界是一條直線&#xff0c;在三…

table = collections.defaultdict(list)申請的字典的類型是什么?

當你使用 collections.defaultdict(list) 來申請一個字典時&#xff0c;這個字典的類型是 defaultdict&#xff0c;但是其行為和表現方式在某些方面與普通的字典&#xff08;dict&#xff09;相似&#xff0c;主要區別在于它如何處理缺失的鍵。 defaultdict 是 Python 標準庫 …

【基礎篇】第4章 Elasticsearch 查詢與過濾

在Elasticsearch的世界里&#xff0c;高效地從海量數據中檢索出所需信息是其核心價值所在。本章將深入解析查詢與過濾的機制&#xff0c;從基礎查詢到復合查詢&#xff0c;再到全文搜索與分析器的定制&#xff0c;為你揭開數據檢索的神秘面紗。 4.1 基本查詢 4.1.1 Match查詢…

Java操作Excel最佳實踐

Java操作Excel最佳實踐 1、背景描述2、Apache POI簡介3、Java讀取Excel 1、背景描述 2、Apache POI簡介 官網&#xff1a;http://poi.apache.org/index.html 官方文檔&#xff1a;https://poi.apache.org/apidocs/index.html 3、Java讀取Excel 3.1、導入依賴 <dependency…

Qt——升級系列(Level Seven):事件、文件

目錄 Qt事件 事件介紹 事件的處理 按鍵事件 鼠標事件 定時器 事件分發器 事件過濾器 Qt文件 Qt文件概述 輸入輸出設備類 文件讀寫類 文件和目錄信息類 Qt事件 事件介紹 事件是應?程序內部或者外部產?的事情或者動作的統稱。在 Qt 中使??個對象來表??個事件。所有的 Qt …

工商業光伏項目如何快速開發?

一、前期調研與規劃 1、屋頂資源評估&#xff1a;詳細測量屋頂面積、承重能力及朝向&#xff0c;利用光伏業務管理軟件進行日照分析和發電量預測&#xff0c;確保項目可行性。 2、政策與補貼研究&#xff1a;深入了解當地政府對工商業光伏項目的政策支持和補貼情況&#xff0…

Java面試過程中遇到的問題

Java面試過程中遇到的問題 介紹工作經驗項目 介紹項目 為什么選用這個技術 報表服務怎么實現的 java框架 1、spring clound特性&#xff0c;組件有那些以及作用 springCloud是一套微服務組件&#xff0c; 常用的Eureka&#xff0c;Ribbon&#xff0c;Hystrix&#xff0c;Fe…

第三方支付平臺如何完美契合跨境電商?

在全球化的大潮中&#xff0c;跨境電商"Eurasia Boutique"的創始人艾米麗&#xff0c;帶著她的夢想和手工藝品&#xff0c;踏上了進入中國市場的征程。這是一個充滿挑戰和機遇的旅程&#xff0c;艾米麗和她的企業需要面對和解決一系列復雜的問題。 合規的門檻 艾米…

JVM原理(十四):JVM虛擬機運行時棧幀結構

Java虛擬機已方法作為最基本的執行單位。 棧幀&#xff1a;是支持Java虛擬機進行方法調用和方法執行背后的數據結構。 棧幀存儲了方法的 局部變量表、操作數棧、動態連接和放回地址等信息。 每一個方法的調用開始和執行結束&#xff0c;都對應著一個棧幀在虛擬機棧里面從入棧…

Linux文件與日志

目錄 1. Linux 文件系統 1.1 inode號 1.2 EXT類型文件恢復 1.3 xfs類型文件備份和恢復 2. 日志分析 2.1 日志類型 2.2日志配置文件 2.3 日志分析的重要性 在Linux系統中&#xff0c;文件和日志是管理和維護系統運行所不可或缺的。理解它們的工作原理和如何有效地管理和…

驅動開發:配置Visual Studio驅動開發環境

100編程書屋_孔夫子舊書網 配置驅動開發環境配置驅動開發模板配置驅動雙機調試 在正式開始驅動開發之前&#xff0c;需要自行搭建驅動開發的必要環境&#xff0c;首先我們需要安裝Visual Studio 2013這款功能強大的程序開發工具&#xff0c;在課件內請雙擊ISO文件并運行內部的…

2009-2024年第一季度上市公司華證ESG評級季度數據

2009-2024年第一季度上市公司華證ESG評級季度數據 1、時間&#xff1a;2009-2024年第一季度 2、指標&#xff1a;證券代碼、證券簡稱、評級日期、綜合評級、綜合得分、E評級、E得分、S評級、S得分、G評級、G得分、證監會行業&#xff08;新&#xff09;、同花順行業&#xff…

Visio框圖自動帶填充色原因及如何取消

0 Preface/Foreword Visio&#xff0c;Windows的一個流程圖&框圖制作工具。 1 新建Visio文件 1.1 圖形帶填充 新建Visio時候&#xff0c;如果選擇了模版&#xff0c;那么就后期使用的工具元素會自動填充。 帶來的弊端&#xff0c;在元素編輯文字時&#xff0c;如果此時不…

蘋果公司的Wifi定位服務(WPS)存在被濫用的風險

安全博客 Krebs on Security 2024年5月21日發布博文&#xff0c;表示蘋果公司的定位服務存在被濫用風險&#xff0c;通過 "竊取"WPS 數據庫&#xff0c;可以定位部隊行蹤。 相關背景知識 手機定位固然主要依賴衛星定位&#xff0c;不過在城市地區&#xff0c;密集的…

Perl 語言開發(五):循環語句

目錄 1. 循環語句概述 2. while 循環 2.1 基本語法 2.2 示例 2.3 無限循環 3. until 循環 3.1 基本語法 3.2 示例 3.3 無限循環 4. for 循環 4.1 基本語法 4.2 示例 4.3 嵌套循環 5. foreach 循環 5.1 基本語法 5.2 示例 5.3 遍歷哈希 6. 循環控制語句 6.1 …

新建Vue工程的幾種方法

文章目錄 使用CLI2 : vue-cli使用CLI3 : vue/cli使用 vue3構建 &#xff08;內置Vite&#xff09;直接使用Vite使用parcel (最少配置方案) 使用CLI2 : vue-cli vue-cli是針對構建vue的腳手架CLI2&#xff0c;只能新建vue2工程。 全局安裝vue-cli之后&#xff0c;構建vue2項目的…