官术网_书友最值得收藏!

  • 深入實踐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。

主站蜘蛛池模板: 齐齐哈尔市| 沙湾县| 漳平市| 汶川县| 白沙| 图木舒克市| 新巴尔虎左旗| 罗定市| 定边县| 布拖县| 齐河县| 东明县| 平山县| 策勒县| 中江县| 明星| 健康| 新安县| 炎陵县| 株洲市| 灯塔市| 麦盖提县| 白朗县| 驻马店市| 辛集市| 溧水县| 泸定县| 南陵县| 康定县| 府谷县| 万荣县| 双城市| 张家港市| 虎林市| 临汾市| 敖汉旗| 绥化市| 满城县| 波密县| 江孜县| 道孚县|