- 深入實踐Spring Boot
- 陳韶健
- 662字
- 2019-01-04 03:26:51
1.3 使用Spring Boot
任何應用的開發都需要對項目的創建、運行和發布等進行管理,使用Spring Boot框架進行開發,可以選擇使用Maven或Gradle等項目管理工具。在這里我們使用的是Maven。
1.3.1 Maven依賴管理
使用Maven,通過導入Spring Boot的starter模塊,可以將許多程序依賴包自動導入工程中。使用Maven的parent POM,還可以更容易地管理依賴的版本和使用默認的配置,工程中的模塊也可以很方便地繼承它。例如,使用1.2.1節創建的工程,修改pom.xml文件,使用如代碼清單1-1所示的簡單Maven配置,基本上就能為一個使用Spring Boot開發框架的Web項目開發提供所需的相關依賴。
代碼清單1-1 Spring Boot Web基本依賴配置
<?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>springboot.example</groupId> <artifactId>spring-boot-hello</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.2.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> </project>
這里只使用了一個依賴配置spring-boot-starter-web和一個parent配置spring-boot-starter-parent,在工程的外部庫(External Libraries)列表中,它自動引入的依賴包如代碼清單1-2所示。
代碼清單1-2 Maven加載的依賴列表
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:1.3.2.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.3.2.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.3.2.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:1.3.2.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.3.2.RELEASE" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.3" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.3" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.13" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.13" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.13" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.13" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-core:4.2.4.RELEASE" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.16" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:1.3.2.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.0.30" level="project" /> <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.0.30" level="project" /> <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-logging-juli:8.0.30" level="project" /> <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.0.30" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-validation:1.3.2.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.2.2.Final" level="project" /> <orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.0.Final" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.1.0" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.6.5" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.6.5" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.6.5" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-web:4.2.4.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.2.4.RELEASE" level="project" /> <orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.2.4.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-context:4.2.4.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.2.4.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.2.4.RELEASE" level="project" />
在工程的外部庫列表中,Spring Boot已經導入了整個springframework依賴,以及autoconfigure、logging、slf4j、jackson、tomcat插件等,所有這些都是一個Web項目可能需要用到的東西(包括你已經考慮到的和沒有考慮到的),它真是一個聰明的助手。
1.3.2 一個簡單的實例
Spring Boot的官方文檔中提供了一個最簡單的Web實例程序,這個實例只使用了幾行代碼,如代碼清單1-3所示。雖然簡單,但實際上這已經可以算作是一個完整的Web項目了。
代碼清單1-3 Spring Boot簡單實例
package springboot.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class Application { @RequestMapping("/") String home() { return "hello"; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
這個簡單實例,首先是一個Spring Boot應用的程序入口,或者叫作主程序,其中使用了一個注解@SpringBootApplication來標注它是一個Spring Boot應用,main方法使它成為一個主程序,將在應用啟動時首先被執行。其次,注解@RestController同時標注這個程序還是一個控制器,如果在瀏覽器中訪問應用的根目錄,它將調用home方法,并輸出字符串:hello。
- Learn TypeScript 3 by Building Web Applications
- LaTeX Cookbook
- Deploying Node.js
- 軟件項目管理(第2版)
- oreilly精品圖書:軟件開發者路線圖叢書(共8冊)
- 小程序開發原理與實戰
- Learning Hunk
- C# and .NET Core Test Driven Development
- Lift Application Development Cookbook
- Elasticsearch Essentials
- C指針原理揭秘:基于底層實現機制
- C語言程序設計
- 監控的藝術:云原生時代的監控框架
- Magento 2 Beginners Guide
- 超好玩的Scratch 3.5少兒編程