開發第一個spring boot應用

咱們來用spring boot開發一個簡單的「hello world」web應用,使用maven構建。開始以前,先檢查你的java與maven的版本,看是不是spring boot1.3支持的版本:java

$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
$ mvn -v
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-12T04:58:10+08:00)
Maven home: /opt/apache-maven-3.2.3
Java version: 1.8.0_45, vendor: Oracle Corporation
Java home: /opt/jdk1.8.0_45/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-53-generic", arch: "amd64", family: "unix"

使用eclipse建立一個普通的maven工程linux

packaging爲jar,並編寫以下pom.xml:web

<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>net.scanner</groupId>
    <artifactId>hello_world</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.0.BUILD-SNAPSHOT</version>
    </parent>
    <!-- 若是你使用的是RELEASE版本,就不須要下面的配置 -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
</project>

添加依賴spring

示例中,咱們在pom.xml的parent部分使用 spring-boot-starter-parent。spring-boot-starter-parent是個重要的,默認的父工程,它提供了dependency-management部分。若是咱們這時候執行:shell

$ mvn dependency:tree

你能夠看到spring-boot-starter-parent,它並無提供什麼依賴jar包。若是咱們向pom.xml添加spring-boot-starter-web依賴(在parent這部分以後):apache

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

你再次運行:數組

$ mvn dependency:tree

那這時候日誌輸出就不同了!瀏覽器

原來tomcat是嵌入方式使用的tomcat

寫點源代碼吧!mvc

在src/main/java目錄,咱們建立一個java源文件:

package hello_world;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@EnableAutoConfiguration
public class Example {
    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }
    public static void main(String[] args) {
        SpringApplication.run(Example.class, args);
    }
}

@RestControllerspring4.0中的註解:RestController代表該類的每一個方法返回對象而不是視圖,它實際就是@Controller和@ResponseBody混合使用的簡寫方法。@RequestMapping就不解釋了,springmvc3中就有了!@EnableAutoConfiguration註解是類級別的註解,它的意思就是開啓自動配置該註解會告知Boot要採用一種特定的方式來對應用進行配置。這種方法會將其餘樣板式的配置均假設爲框架默認的約定,固然它是基於你添加的依賴包。本例中,咱們添加了spring-boot-starter-web依賴,而後嵌入式tomcat與spring MVC都自動依賴進來了,這個@EnableAutoConfiguration註解就會假設你開發的是一個web應用程序並進行自動配置。

最後是一個main方法,它是標準的java應用程序的入口。它調用springApplication.run來引導咱們的應用程序,自動配置tomcat服務並啓動spring。它須要Example.class做爲run方法的一個參數,告訴SpringAppLication它是一個主要的spring組件。args數組做爲參數是經過命令行傳入的。

運行示例

咱們既然使用了spring-boot-starter-parent,那咱們就有一個有用的run目標(maven中目標)來啓動應用程序。在工程的根目錄執行下面的命令:

$ mvn spring-boot:run

若是你打開瀏覽器輸入:localhost:8080/ 你會看到輸入:Hello World!  按ctrl + c能夠優雅地退出!

建立一個可執行的jar

讓咱們建立一個可徹底獨立執行的jar文件。建立一個可獨立執行的jar文件,咱們須要在項目的pom.xml中添加spring-boot-maven-plugin,以下:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

指定java版本

pom.xml中添加:

<properties>
    <java.version>1.8</java.version>
</properties>

完整的pom.xml文件以下:

<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>net.scanner</groupId>
    <artifactId>hello_world</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.0.BUILD-SNAPSHOT</version>
    </parent>
    <!-- 指定java版本,只須要在這裏聲明下這個參數變量就能夠了 -->
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <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>
    <!-- 若是你使用的是RELEASE版本,就不須要下面的配置 -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
</project>

注意:spring-boot-starter-parent的pom包含了<executions>配置來綁定repackage目標。若是你不使用父pom中的配置,你須要定義你本身的配置。運行:

$ mvn package

便可打包完成!!

若是你在工程的target目錄下看到 hello_world-0.0.1-SNAPSHOT.jar ,那就是打包成功!若是你想看這個jar包裏面的內容,能夠執行:

$ jar tvf target/hello_world-0.0.1-SNAPSHOT.jar

你在target目錄下,還會看到一個hello_world-0.0.1-SNAPSHOT.jar.original文件。它是在spring boot打包以前原有的jar文件。

如今運行應用程序,咱們可使用 java -jar 命令:

$ java -jar target/hello_world-0.0.1-SNAPSHOT.jar

退出按:CTRL + C

相關文章
相關標籤/搜索