Spring Boot QuickStart (1)

蠻com發表於2017-07-01

開始

介紹

Spring Boot 簡化了基於 Spring 的應用開發,你只需要 “run” 就能建立一個獨立的,產品級別的 Spring 應用。

Spring 平臺及第三方庫提供開箱即用的設定,這樣你就可以有條不紊地開始。多數 Spring Boot 應用只需要很少的Spring 配置。你可以使用 Spring Boot 建立 Java 應用,並使用 java -jar 啟動它或採用傳統的 war 部署方式

系統要求

Java7 以上,通常建議儘可能使用 Java8

Maven 3.2+,Gradle 2.9+ 或 Gradle 3

內嵌容器支援 Tomcat、Jetty

安裝

Maven 安裝

POM 檔案繼承 spring-boot-starter-parent 工程,並宣告一個或多個 “Start POMs” 依賴,此外 Spring Boot 提供了一個可選的 Maven 外掛,用於建立可執行 jars

...
<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>1.5.3.RELEASE</version>
</parent>
    
<dependencies>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
</dependencies>
    
 <build>
   <plugins>
       <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
       </plugin>
   </plugins>
</build>   
...

Gradle 安裝

使用

Starters

Starters 是一個依賴描述符的集合,你可以將它包含進專案中,這樣新增依賴就非常方便。你可以獲取所有 Spring 及相關技術的一站式服務,而不需要翻閱示例程式碼,拷貝貼上大量的依賴描述符。例如,如果你想使用 Spring 和 JPA 進行資料庫訪問,只需要在專案中包含spring-boot-starter-data-jpa依賴,然後你就可以開始了。

該 starters 包含很多搭建,快速執行專案所需的依賴,並提供一致的,可管理傳遞性的依賴集。

以下應用程式 starters 是 Spring Boot 在 org.springframework.boot group 下提供的:

名稱 描述
spring-boot-starter 核心Starter,包含了自動配置,日誌,YAML配置

Web

名稱 描述
spring-boot-starter-web 用於使用Spring MVC構建web應用,包括RESTful。Tomcat是預設的內嵌容器
spring-boot-starter-web-services 對Spring Web服務的支援
spring-boot-starter-websocket 對Spring WebSocket支援
spring-boot-starter-mobile 用於使用Spring Mobile開發web應用
spring-boot-starter-jersey 用於使用JAX-RS和Jersey構建RESTful web應用,spring-boot-starter-web的替代方案
spring-boot-starter-hateoas  用於使用基於hypermedia-based RESTful web 應用

資料

名稱 描述
spring-boot-starter-jdbc 對JDBC的支援(使用Tomcat JDBC連線池)
spring-boot-starter-data-redis 用於使用通過Jedis客戶端操作的Redis
spring-boot-starter-data-mongodb 用於使用基於文件的資料庫MongoDB
spring-boot-starter-data-cassandra 用於使用分散式資料庫Cassandra
spring-boot-starter-data-solr 用於使用Apache Solr
spring-boot-starter-data-elasticsearch 用於使用Elasticsearch搜尋
spring-boot-starter-data-couchbase 用於使用基於文件的資料庫Couchbase
spring-boot-starter-data-gemfire  用於使用分散式資料儲存GemFire
spring-boot-starter-data-neo4j 用於使用圖資料庫Neo4j
spring-boot-starter-data-ldap 用於使用 Spring Data LDAP
spring-boot-starter-data-jpa 用於使用Hibernate實現Spring Data JPA
spring-boot-starter-data-rest 用於使用 Spring Data REST

事務

名稱 描述
spring-boot-starter-jta-atomikos 用於使用Atomikos實現JTA事務
spring-boot-starter-jta-bitronix 用於使用Bitronix實現JTA事務
spring-boot-starter-jta-narayana 用於使用Narayana 實現JTA事務

模板

名稱 描述
spring-boot-starter-thymeleaf 用於使用Thymeleaf模板引擎構建MVC web應用
spring-boot-starter-freemarker 用於使用FreeMarker模板引擎構建MVC web應用
spring-boot-starter-mustache 用於使用Mustache模板引擎構建MVC web應用
spring-boot-starter-groovy-templates 用於使用groovy模板引擎構建MVC web應用

訊息

名稱 描述
spring-boot-starter-activemq 用於使用Apache ActiveMQ實現JMS訊息
spring-boot-starter-artemis 用於使用Apache Artemis實現JMS訊息
spring-boot-starter-amqp 用於使用AMQP與Rabbit MQ訊息佇列

工具

名稱 描述
spring-boot-starter-mail 用於使用Java Mail和Spring框架email傳送支援
spring-boot-starter-integration 用於使用Spring Integration
spring-boot-starter-security 對Spring Security的支援
spring-boot-starter-test 用於測試Spring Boot應用,支援常用測試類庫,包括JUnit, Hamcrest和Mockito
spring-boot-starter-batch 用於使用Spring Batch
spring-boot-starter-cache 用於使用Spring框架的快取支援
spring-boot-starter-actuator 為Spring Boot提供了監控與管理
spring-boot-starter-aop 用於使用Spring AOP和AspectJ實現面向切面程式設計
spring-boot-starter-validation 用於使用Hibernate Validator實現Java Bean校驗
spring-boot-starter-logging 用於Logback支援,預設的logging starter
spingg-boot-starter-log4j2 用於Log4j2支援,用於替換預設的logging

社會化

名稱 描述
spring-boot-starter-social-linkedin 用於使用Spring Social Linkedin的支援
spring-boot-starter-social-facebook 用於使用Spring Social Facebook的支援
spring-boot-starter-social-twitter 用於使用Spring Social Twitter的支援

社群 Starters

下面可以獲取一個社群貢獻的 starters 列表:

https://github.com/spring-pro…

名稱 描述
grpc-spring-boot-starter 用於支援gRPC
mybatis-spring-boot 用於支援Mybatis
okhttp-spring-boot 用於支援OkHttp

組織程式碼

下面是個典型的結構,建議把應用的main類放到包的頂層

com
 +- example
     +- myproject
         +- Application.java
         |
         +- domain
         |   +- Customer.java
         |   +- CustomerRepository.java
         |
         +- service
         |   +- CustomerService.java
         |
         +- web
             +- CustomerController.java

@SpringBootApplication註解

@SpringBootApplication註解等價於以預設屬性使用:
@Configuration
@EnableAutoConfiguration
@ComponentScan

執行

通過 jar 執行

 java -jar target/myproject-0.0.1-SNAPSHOT.jar

通過 Maven 外掛執行

mvn spring-boot:run

可以使用一些有用的環境變數:

export MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=128M

熱交換

徹底的的解決可以使用:Spring Loaded 專案或 JRebel

spring-boot-devtools 支援應用的快速重啟

配置

Application 屬性檔案

SpringApplication將從以下位置載入 application.properties 檔案,並把它們新增到Spring:

  1. 當前目錄下的/config 子目錄。

  2. 當前目錄。

  3. classpath下的/config包。

  4. classpath根路徑(root)。

命令列屬性

SpringApplication會將所有命令列配置引數(以`–`開頭,比如–server.port=9000)轉化成一個property,並將其新增到Spring Environment中

命令列屬性總是優先於其他屬性源。

日誌級別

通過 –debug 標識開啟控制檯DEBUG級別日誌記錄,也可以在 application.properties中指定 debug=true

java -jar myapp.jar --debug

日誌級別配置示例:

logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

相關文章