自我救贖 → 利用 IDEA 和 Spring Boot 搭建 SSM
前言
開心一刻
兒子讀高中放學回來了,一向不管他學習的我突然來了興趣,想看看他的學習他的狀況,抄起他的數學習題看了起來,當看到 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 = 10! 我當時火冒三丈,一巴掌就呼過去了,怒吼道:你這是怎麼讀的,1乘以2乘以3乘以...10怎麼等於10! 旁邊的媳婦一平底鍋甩我臉上:不等於10的階乘,那等於多少?我:這不是感嘆號嗎?
寫作背景
關於 ssm 的基礎篇,我一共寫了三篇部落格:
利用maven/eclipse搭建ssm(spring+spring mvc+mybatis)
搭建 ssm 比較簡單,eclipse 配置好 maven,工程中配置好相關配置檔案即可;但是此種方式已過時,包括eclipse、spring4.0.2、ssm的搭建方式(pom中配置的依賴太多),不再推薦此種方式。
關於利用maven搭建ssm的部落格,我們一起來探討下問的最多的問題
根據大家搭建 ssm 過程中遇到的問題,總結出了此篇,主要是針對資料繫結的問題進行了詳細的說明;內容不過期,推薦仔細看看。
Spring MVC的工作原理,我們來看看其原始碼實現
由問題:Spring mvc 是何時、何地、如何將Model中的屬性繫結到哪個作用域 引發的 Spring MVC 的工作原理的探索,隨著 Spring 版本的變遷,Spring MVC 或許會有少許的改動,但單核心不會變,推薦仔細看看。
近來,還是陸陸續續收到一些剛入門的小夥伴的求助,利用maven/eclipse搭建ssm還是會出現各種各樣的問題,關鍵是我在幫忙解決的過程中竟然發現我不太會用 eclipse 了, 而且 spring 的版本還是 4,我就問他們了:你們怎麼還在用 eclipse,spring的版本為什麼那麼低? 結果我得到一個統一的回答:我是參考的你的部落格搭建的。
此刻我意識到了這是我的問題:隨著時間的流逝,我沒有及時的更新我的部落格 → 利用maven/eclipse搭建ssm(spring+spring mvc+mybatis),導致很多剛入門的小夥伴看到的是過時的內容,誤人子弟實乃大罪過!所以我趕緊寫了此篇,指正當前正確的方向。一段時間後,此篇博文涉將的內容也會過時,所以大家最好能自己抓住當下主流的內容。
目前公司用的是 idea + spring boot 實現的工程搭建,也是當下最流行的方式,下面我也就演示下如何利用 idea 和 spring boot 搭建 ssm工程。
IDEA
IDEA 全稱 IntelliJ IDEA,具體它是什麼,有什麼用,怎麼用 等等關於 IDEA 的內容,大家自行去查閱,我就不做囉嗦了。可參考:IDEA 使用教程(持續更新,19年6月14號更新)
推薦大家用最新的 IDEA 版本,有能力的請支援正版
只強調一點:maven 設定
maven的更多內容大家自行去查閱資料,maven 的安裝可參考利用maven/eclipse搭建ssm(spring+spring mvc+mybatis),推薦用最新的;安裝好maven之後,推薦配置上阿里的映象,在 maven 的配置檔案 settings.xml 中的 mirrors 節點下新增如下 mirror 節點
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
maven安裝好後,需要在 idea 中配置好 maven,配置過程很簡單,如下圖所示
這樣 idea 整合 maven 就成功了
Spring Boot
關於 Spring Boot 的詳細資訊,大家可以去它的官方文件看,也可以看園子內大佬的部落格,推薦:Spring boot 入門篇
Spring Boot 是由 Pivotal 團隊提供的全新框架,但不是 Spring 的替代品,而是 Spring 的衍生品,目的是用來簡化新 Spring 應用的初始搭建以及開發過程;它採用了約定大於配置的做法,預設配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架,同時 Spring Boot 採用 Starters 的方式簡化了工程的 maven 依賴配置。
目前 Spring Boot 的最新的釋出版本是 2.1.6 ,我們不採用它,我們用 2.1.0 這個釋出了有一段時間的版本來演示
SSM 搭建
我們可以直接下載官網的樣例,然後匯入到 idea,這是一種方式,但我還是想給大家演示一個完整的從無到有的過程
工程搭建
方式很多種,我獨愛白的像一張紙一樣的初始配置
配置 maven 依賴
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> <groupId>com.lee</groupId> <artifactId>ssm</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <encoding>UTF-8</encoding> <java.version>1.8</java.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <pagehelper.version>1.2.5</pagehelper.version> <druid.version>1.1.10</druid.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version> </parent> <dependencies> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!-- mybatis相關 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>${pagehelper.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> </project>View Code
工程配置
application.yml
server: port: 8888 servlet: context-path: /ssm spring: #連線池配置 datasource: type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC username: root password: 123456 initial-size: 1 #連線池初始大小 max-active: 20 #連線池中最大的活躍連線數 min-idle: 1 #連線池中最小的活躍連線數 max-wait: 60000 #配置獲取連線等待超時的時間 pool-prepared-statements: true #開啟PSCache,並且指定每個連線上PSCache的大小 max-pool-prepared-statement-per-connection-size: 20 validation-query: SELECT 1 FROM DUAL validation-query-timeout: 30000 test-on-borrow: false #是否在獲得連線後檢測其可用性 test-on-return: false #是否在連線放回連線池後檢測其可用性 test-while-idle: true #是否在連線空閒一段時間後檢測其可用性 #mybatis配置 mybatis: type-aliases-package: com.entity #config-location: classpath:mybatis/mybatis-config.xml mapper-locations: classpath:mapper/*.xml # pagehelper配置 pagehelper: helperDialect: mysql #分頁合理化,pageNum<=0則查詢第一頁的記錄;pageNum大於總頁數,則查詢最後一頁的記錄 reasonable: true supportMethodsArguments: true params: count=countSqlView Code
完整工程
java資料夾下的內容,包括 conroller、service、mapper、dao 以及 SsmApplication就不逐一展示了,更多詳細程式碼請看:ssm
實現效果
總結
不是說過時的東西不能用,而是不推薦用,效率是一方面,安全也是一方面,保不準過時的內容會在後續哪個版本就直接剔除了,那就是真的不能用了;當下 java web 的熱門開發工具就是 IDEA(不僅僅只是java哦),熱門框架就是 Spring Boot,當下流行不保證一直流行,我們需要保持一顆學習的心,多關注時下的熱門技術。
參考
SpringBoot入門教程(一)詳解intellij idea搭建SpringBoot
Spring boot 入