开发第一个spring boot应用

原创
2015/05/17 16:32
阅读数 1.9W

我们来用spring boot开发一个简单的“hello world”web应用,使用maven构建。开始之前,先检查你的java与maven的版本,看是否是spring boot1.3支持的版本:

$ 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工程

packaging为jar,并编写如下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>
    <!-- 如果你使用的是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>

添加依赖

示例中,我们在pom.xml的parent部分使用 spring-boot-starter-parent。spring-boot-starter-parent是个重要的,默认的父工程,它提供了dependency-management部分。如果我们这时候执行:

$ mvn dependency:tree

你可以看到spring-boot-starter-parent,它并没有提供什么依赖jar包。如果我们向pom.xml添加spring-boot-starter-web依赖(在parent这部分之后):

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

你再次运行:

$ mvn dependency:tree

那这时候日志输出就不一样了!

原来tomcat是嵌入方式使用的

写点源代码吧!

在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

展开阅读全文
打赏
1
54 收藏
分享
加载中
退出按:CTRL + C。这个太逗了吧,不都是后台运行的么,哪有ctrl+c可以按
2015/12/03 12:08
回复
举报
柳哥博主

引用来自“未来还没来”的评论

比我写的强多了
看的官方文档
2015/05/19 15:53
回复
举报
比我写的强多了
2015/05/19 14:00
回复
举报
更多评论
打赏
3 评论
54 收藏
1
分享
返回顶部
顶部