<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Spring Boot 是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化 Spring 應用的初始搭建以及開發過程。該框架使用了特定的方式來進行設定,從而使開發人員不再需要定義樣板化的設定。Spring Boot 可以輕鬆建立一個基於 Spring 且獨立執行的生產級應用。
SpringBoot 的安裝有很多種方式,最簡單的一種是直接將 spring-boot-*.jar 等檔案新增到工程的 classpath 下,這種你就可以執行並偵錯你的應用了。如果是企業級應用,推薦使用構建工具來管理專案的依賴,比如:Maven 或者 Gradle 等。對於直接新增 classpath 的方式,這裡不做多餘的介紹,下面主要描述基於構建工具的安裝指導。
Spring Boot 與 Apache Maven 3.2相容。如果你還沒有安裝 Maven,可以按照 maven.apache.org 上的說明進行操作。
Spring Boot 依賴使用 org.springframework.boot 作為 groupId。通常情況下,你的 POM 檔案會繼承 spring-boot-starter-parent 工程,然後再宣告一個或多個 Starters 的依賴。Spring Boot 同時也提供了一個可選的Maven 外掛用來生成可執行的 Jar 包。
典型的 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.example</groupId> <artifactId>myproject</artifactId> <!-- 繼承 Spring Boot 的預設值 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> </parent> <!-- 為 Web 應用新增能用依賴 --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <!-- 打包成一個可執行 jar 包 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
提示:
spring-boot-starter-parent 是使用 Spring Boot 的一種比較好的方式,但它並不適用於所有場景。有時,你可能需要繼承一個不同的父級 Pom,或者你不喜歡這種預設的設定。你也可以通過宣告一個 scope=import 的依賴來使用它:
<dependencyManagement> <dependencies> <dependency> <!-- 從 Spring Boot 匯入依賴管理 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
相對 Maven 龐大的 XML 設定,我更喜歡 Gradle 多一點,不但簡潔而且靈活性也好很多。Spring Boot 與 Gradle(2.9或以上)、Gradle 3相容。如果你還沒有安裝 Gradle,你可以按照 www.gradle.org 上的操作說明來進行安裝。
典型的 build.gradle 檔案:
plugins { id 'org.springframework.boot' version '1.5.3.RELEASE' id 'java' } jar { baseName = 'myproject' version = '0.0.1-SNAPSHOT' } repositories { jcenter() maven { url "http://maven.aliyun.com/nexus/content/groups/public/" } } dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile("org.springframework.boot:spring-boot-starter-test") }
建立一個簡單的 Java 類如下:
import org.springframework.boot.*; import org.springframework.boot.autoconfigure.*; import org.springframework.stereotype.*; import org.springframework.web.bind.annotation.*; @RestController @EnableAutoConfiguration public class Example { @RequestMapping("/") String home() { return "Hello World!"; } public static void main(String[] args) throws Exception { SpringApplication.run(Example.class, args); } }
Example 類上的第一個註解 @RestController 是 @Controller 及 @ResponseBody 的組合,表明這是一個控制器,且所有響應資料都會被序列化到響應體裡面返回。而方法上的 @RequestMapping 註解會為請求處理提供路由資訊。這些註解都是 Spring 的,而不是 Spring Boot 特有的。
類上的第二個註解 @EnableAutoConfiguration 會告訴 Spring Boot 去通過依賴的 Jar 包設定 Spring 工程。因為 spring-boot-starter-web 裡面包含有 Tomcat 及 Spring MVC,所以它會認為這是一個 Web 工程,並進行相應的 Spring 設定。
應用的最後一部分是一個 main 方法,它通過呼叫 SpringApplication 的 run 方法將應用程式委託給 Spring Boot。SpringApplication 將引導我們的應用程式啟動 Spring 及自動設定的 Tomcat Web 服務。我們需要將 Example.class 作為一個引數傳遞給 run 方法來告訴 SpringApplication 它是主要的 Spring 元件。
執行 main 方法後,即可以使用瀏覽器開啟地址 localhost:8080 會得到輸出:
Hello World!
一般的應用都會使用 域名的反轉 + 專案名 作為專案的統一包名字首。如:com.qchery.funda。在 SpringBoot 的專案中,推薦使用如下佈局:
com
+- qchery
+- funda
+- Application.java
|
+- entity
| +- Customer.java
|
+- dao
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
其中,Application.java 檔案如下:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @EnableAutoConfiguration @ComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
一般來說,我們會將 @EnableAutoConfiguration 註解放置在 主類上,也就是上面結構中的 Application.java。它隱式定義了包含某些搜尋項的搜尋包,例如,如果你正編寫一個 JPA 的應用程式,那麼帶 @EnableAutoConfiguration 註解的類將會被用來搜尋帶有 @Entity 的類。
而 @ComponentScan 會用來自動掃描相應元件,由於 Application.java 是的根包名下,所以它不需要宣告 basePackage 去指定需要掃描的包,預設為根包名,即:com.qchery.funda。
SpringBoot 同時支援 Java-based 設定及 XML 檔案設定。但推薦使用 Java-based 形式的設定,如果現在的系統中已經存在一些 XML 形式的設定,建議使用相同效果的 Java-based 設定進行替換,你可以通過搜尋 Enable* 來查詢對應的 Java-based 設定。
在 SpringBoot 工程裡面,我們不需要把所有的設定放置到一個類檔案裡面。它的 @Import 註解可以幫助我們匯入其它的設定類,如果想要匯入 XML 形式的設定,可以使用 @ImportResource 註解。另外,還可以使用 @ComponentScan 註解去掃描所有帶有 @Configuration 註解的類。
當你在某一個帶有 @Configuration 的類里加上 @EnableAutoConfiguration 或 @SpringBootApplication 註解時,SpringBoot 會根據所新增的依賴包自動完成專案設定。例如,如果你在類路徑下新增 HSQLDB 的包,但你沒有設定任何資料庫屬性,SpringBoot 會自動設定一個 In-Memory 資料庫。其中 @EnableAutoConfiguration 只能新增一個類上,建議將其加在主要的 @Configuration 類上。
自動化設定並不是侵入式的,在任何地方你都可以通過自定義設定來替換它。例如,如果你新增自己的資料庫設定,那麼預設的嵌入式資料庫支援將會被退回。如果想要檢視自動化設定是否生效,可以在執行程式時,加上 –debug 引數進行檢視。
當你發現自動化設定不能按自己的意願進行工作的時候,可以通過 @EnableAutoConfiguration 的 exclude 屬性來禁用掉它們。
import org.springframework.boot.autoconfigure.*; import org.springframework.boot.autoconfigure.jdbc.*; import org.springframework.context.annotation.*; @Configuration @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration { }
由於大多數情況下,@Configuration,@EnableAutoConfiguration 及 @ComponentScan 註解都是一起使用的。SpringBoot 提供了 @SpringBootApplication 這個更加方便的選擇,它等同於前三個註解。
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication // 等同於 @Configuration @EnableAutoConfiguration @ComponentScan public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
專案的 github 地址:https://github.com/qchery/funda
到此這篇關於SpringBoot實戰教學之新手入門篇的文章就介紹到這了,更多相關SpringBoot入門篇內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45