我爱编程

Spring Boot/Hello World!

2016-09-27  本文已影响259人  米刀灵

创建POM:
创建一个Maven pom.xml文件如下:

<?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>com.zzhblh</groupId>
    <artifactId>testspringboot</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--不标注packaging的话,默认为jar-->
    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.0.RELEASE</version>
    </parent>
   <!--  Spring默认使用jdk1.6,如果你想使用jdk1.8,你需要在pom.xml的属性里面添加java.version -->
    <properties> 
            <java.version>1.8</java.version>        
    </properties>

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

如果再次运行mvn dependency:tree,你将看到现在多了一些其他依赖,包括Tomcat web服务器和Spring Boot自身。

写一个Hello World:
创建一个单独的Java文件。Maven默认会编译src/main/java下的源码,所以你需要创建那样的文件结构,并添加一个名为src/main/java/Example.java的文件:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@RestController
@SpringBootApplication
public class Example {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Example.class, args);
    }

}
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <exclusions>
      <exclusion>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
      </exclusion>
   </exclusions>
</dependency>

增加jetty依赖:

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

配置文件:
除了上面传参的方法,更常用的是使用配置文件,src/main/resource/application.properties

#内嵌tomcat配置
server.port=8080
#server.context-path= //如果没有值就不配置,可以使用默认,但不要在这里留空,会有错误
server.tomcat.uri-encoding=UTF-8

启动:
此时在项目根目录下执行mvn spring-boot:run启动应用
在浏览器输入http://localhost:8080/ ,你会看到Hello World!字样,这是一个web应用,使用了嵌入式的tomcat。总结下Spring Boot应用的启动流程:

创建可执行的jar:
创建可执行的jar,我们需要将spring-boot-maven-plugin添加到pom.xml中,在dependencies节点后面插入spring boot插件:

<?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>com.zzhblh</groupId>
    <artifactId>testspringboot</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.0.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>
</project>

此时在项目根目录下运行mvn package,查看target目录,你应该可以看到testspringboot-0.0.1-SNAPSHOT.jar,该文件大概有10Mb。想查看内部结构,可以运行$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar。在该目录下,你应该还能看到一个很小的名为testspringboot-0.0.1-SNAPSHOT.jar.original的文件,这是在Spring boot重新打包前,Maven创建的原始jar文件。可以使用java -jar命令运行该应用程序$ java -jar target/testspringboot-0.0.1-SNAPSHOT.jar。同样在浏览器输入http://localhost:8080/, 你会看到Hello World!字样,这是一个web应用,使用了嵌入式的tomcat。ctrl-c退出。如果你仍然想生成war包(不包含内嵌的容器等),你需要把应用的主类改为继承SpringBootServletInitializer:

@SpringBootApplication
public class Example extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Example.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Example.class, args);
    }

}

然后更新你的构建配置pom.xml,将packaging改为war,并将内嵌容器的依赖标记为provided。

<dependencies>
    <!-- … -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- … -->
</dependencies>

参考:
https://qbgbook.gitbooks.io/spring-boot-reference-guide-zh/content/II.%20Getting%20started/8.%20Introducing%20Spring%20Boot.html
http://www.jianshu.com/p/5ac18abc91f0

上一篇下一篇

猜你喜欢

热点阅读