開始
介紹
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:
-
當前目錄下的/config 子目錄。
-
當前目錄。
-
classpath下的/config包。
-
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