Spring Boot QuickStart (1)

開始

介紹

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

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

系統要求

Java7 以上,一般建議儘量使用 Java8github

Maven 3.2+,Gradle 2.9+ 或 Gradle 3 web

內嵌容器支持 Tomcat、Jettyredis

安裝

Maven 安裝

POM 文件繼承 spring-boot-starter-parent 工程,並聲明一個或多個 "Start POMs" 依賴,此外 Spring Boot 提供了一個可選的 Maven 插件,用於建立可執行 jarsspring

...
<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 安裝

mongodb

使用

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