环境:

  • jdk:1.8.0_73
  • maven:3.3.9
  • spring-boot:1.2.5.RELEASE(在pom.xml中指定了)

注意:关于spring-boot的支持,

  • 最少使用jdk7(jdk6也可以,可能需要额外配置,没试过,官方推荐jdk8)
  • maven至少使用3.2

1、首先进入一个文件夹,例如"~/Desktop/project",然后按照"第一章 企业项目开发--maven+springmvc+spring+mybatis+velocity整合"所说的手工建立一个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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xxx</groupId>
    <artifactId>myboot</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--
         引入spring-boot-starter-parent做parent是最好的方式,
         但是有时我们可能要引入我们自己的parent,此时解决方式有两种:
         1)我们自己的parent的pom.xml的parent设为spring-boot-starter-parent(没有做过验证,但是感觉可行)
         2)使用springboot文档中的方式:见spring-boot-1.2.5-reference.pdf的第13页
    -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.5.RELEASE</version>
    </parent>

    <!-- 引入实际依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!--
                用于将应用打成可直接运行的jar(该jar就是用于生产环境中的jar)
                值得注意的是,如果没有引用spring-boot-starter-parent做parent,
                且采用了上述的第二种方式,这里也要做出相应的改动
             -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
<?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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xxx</groupId>
    <artifactId>myboot</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--
         引入spring-boot-starter-parent做parent是最好的方式,
         但是有时我们可能要引入我们自己的parent,此时解决方式有两种:
         1)我们自己的parent的pom.xml的parent设为spring-boot-starter-parent(没有做过验证,但是感觉可行)
         2)使用springboot文档中的方式:见spring-boot-1.2.5-reference.pdf的第13页
    -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.5.RELEASE</version>
    </parent>

    <!-- 引入实际依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!--
                用于将应用打成可直接运行的jar(该jar就是用于生产环境中的jar)
                值得注意的是,如果没有引用spring-boot-starter-parent做parent,
                且采用了上述的第二种方式,这里也要做出相应的改动
             -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project

之后,使用"mvn clean compile"成功后,引入eclipse,具体的方式见:第一章 企业项目开发--maven+springmvc+spring+mybatis+velocity整合

2、引入eclipse中的工程结构如下:

之后,创建红框部分。

FirstBoot:

package com.xxx.firstboot;

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:spring mvcd的注解,
 * 相当于@Controller与@ResponseBody的合体,可以直接返回json
 *
 * @EnableAutoConfiguration:spring boot的注解
 * 是无配置启动的关键部分
 */
@RestController
@EnableAutoConfiguration
public class FirstBoot {

    @RequestMapping("/hello")
    public String testFirstMethod(){
        return "Hello jigang!!!";
    }

    /**
     * spring boot的入口,在整个项目中,包括其子项目在内,
     * 只能有一个main方法,否则spring boot启动不起来
     */
    public static void main(String[] args) {
        SpringApplication.run(FirstBoot.class, args);
    }

}

解释:

  • @RestController:spring mvc的注解,相当于==>@Controller+@ResponseBody+启动json转换器注解,可以直接返回json
  • @EnableAutoConfiguration:spring boot的注解,是无xml配置启动的关键部分

  • main方法:spring boot的入口,在整个项目中,包括其子项目在内,只能有一个main方法,否则spring boot启动不起来
    • 注意:关于run方法的第一个参数,不适用全类名也行,推荐使用全类名

3、启动spring boot

首次启动,采用"mvn spring-boot:run"(会下载一些东西),之后启动直接在主类(含有main方法的类)上"run as-->java application"即可

当看到console输出以下的信息时,表示启动spring-boot成功,

之后在浏览器输入路径"http://localhost:8080/hello",输出信息"Hello jigang!!!",则成功!!!

4、打包成可执行的jar,该jar将是在生产环境下可用的jar

生产jar的过程依赖于引入的spring-boot-maven-plugin.jar。

执行"mvn package",查看target下的文件:

后边那一个包是maven自己打的,前边那个是spring-boot自己又基于后边那个重新打包了(repackage)

注意:如果没有使用spring-boot-starter-parent做parent(看pom.xml的注释),那么打包过程需要作出相应的调整。

5、运行打包好的jar

进入myboot文件夹下,执行命令"java -jar target/myboot-1.0-SNAPSHOT.jar",得出如下结果:

之后访问浏览器即可。

说明:

在没有引入spring-boot-starter-web.jar之前,查看依赖树:

引入spring-boot-starter-web.jar之后,查看依赖树:

实际上,spring-boot-starter-web.jar这个jar引入5各方面的jar:

  • spring-boot的启动jar:spring-boot-starter.jar
  • tomcat相关jar(spring-boot-1.2.5-->tomcat8)
  • jackson
  • hiberbate-validator
  • spring相关jar(spring-boot-1.2.5-->spring4.1)

两个问题:

1)若不采用spring-boot-starter-parent做parent,该怎么配置?

解决方案:

加入以下代码即可。

<dependencyManagement>
        <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
</dependencyManagement>

完整的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/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xxx</groupId>
    <artifactId>myboot</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 引入spring-boot-starter-parent做parent是最好的方式, 但是有时我们可能要引入我们自己的parent,此时解决方式有两种:
        1)我们自己的parent的pom.xml的parent设为spring-boot-starter-parent(没有做过验证,但是感觉可行) 2)使用springboot文档中的方式:见spring-boot-1.2.5-reference.pdf的第13页 -->
    <!-- <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.5.RELEASE</version> </parent> -->

    <dependencyManagement>
        <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.2.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- 引入实际依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- 用于将应用打成可直接运行的jar(该jar就是用于生产环境中的jar) 值得注意的是,如果没有引用spring-boot-starter-parent做parent,
                且采用了上述的第二种方式,这里也要做出相应的改动 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

注意:引入的是在dependencyManagement,spring-boot-dependencies的type=pom,scope=import

2)若不采用spring-boot-starter-parent做parent,打包插件spring-boot-maven-plugin该怎么配置?

这里采用上边的配置,我直接执行"mvn package"也成功了,这里有知道的给解释一下?与官方文档不一样啊

【第一章】 第一个spring boot程序的更多相关文章

  1. 第一章 第一个spring boot程序(转载)

    第一章 第一个spring boot程序 本编博客转发自:http://www.cnblogs.com/java-zhao/p/5324185.html   环境: jdk:1.8.0_73 mave ...

  2. 第一章 第一个spring boot程序

    环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...

  3. 我的第一个spring boot程序(spring boot 学习笔记之二)

    第一个spring boot程序 写在前面:鉴于spring注解以及springMVC的配置有大量细节和知识点,在学习理解之后,我们将直接进入spring boot的学习,在后续学习中用到注解及其他相 ...

  4. Spring Boot从入门到精通(一)搭建第一个Spring Boot程序

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...

  5. 第一个Spring Boot程序

    Windows 10家庭中文版,java version "1.8.0_152", Eclipse Oxygen.1a Release (4.7.1a),Spring Tools ...

  6. 第一个Spring Boot程序启动报错了

    创建完成第一个Spring Boot项目后,准备运行,尝一下胜利的果实. 启动日志如下 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ...

  7. 第一个Spring Boot程序启动报错了(番外篇)

    Spring Boot内嵌了一个容器,我可以不用吗?我能不能用外部的容器呢? 当然是可以的! 然后,下面代码在pom文件中一定要有哦! <dependency> <groupId&g ...

  8. Spring Boot学习——第一个Spring Boot程序

    依照下面的步骤创建项目: 点击 Next 项目介绍: Application.java中的主要代码: @SpringBootApplication public class ReaderApplica ...

  9. 第一个spring boot 程序

    安装.运行.预览省略 错误1:8080端口被IIS占用,关闭它 Description: The Tomcat connector configured to listen on port 8080 ...

随机推荐

  1. 解决VMware虚拟机的CentOS无法上网

    1)点击 VM->Settings Hardware选项卡下面 2)点击Network Adapter 设置如下图所示,首先我们在虚拟机中将网络配置设置成NAT 在服务中开启: VMware D ...

  2. 【Python爬虫】如何确定自己浏览器的User-Agent信息

    User-Agent:简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本.浏览器及版本等信息.在做爬虫时加上此信息,可以伪装为浏览器:如果不加,很可能会被识别出为爬虫. 那么如 ...

  3. python-面向对象-10-单例

    单例 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的成熟 ...

  4. 据库被标记为RESTORING的处理方式,正在还原中,正在恢复

    关键词:正在还原,正在恢复,restoring,RECOVERING 转自:http://limindo.blog.163.com/blog/static/2647585620101161154121 ...

  5. 万恶之源 - Python基础知识补充

    编码转换 编码回顾: 1. ASCII : 最早的编码. ⾥⾯有英⽂⼤写字⺟, ⼩写字⺟, 数字, ⼀些特殊字符. 没有中⽂, 8个01代码, 8个bit, 1个byte 2. GBK: 中⽂国标码, ...

  6. 万恶之源 - Python基础数据类型三

    字典 字典的简单介绍 字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯⼀的.在保存的时候, 根据key来计算出⼀个内存地址. 然后将key ...

  7. Biorhythms(中国剩余定理)

    http://shuxueshi.jie.blog.163.com/blog/static/13611628820104179856631/ 这篇博客写的很棒! #include<stdio.h ...

  8. Sequence(priority_queue)

    这题很智慧. VJ上4000多ms #include<cstdio> #include<algorithm> #include<queue> #include &l ...

  9. testng入门教程12 TestNG执行多线程测试

    testng入门教程 TestNG执行多线程测试 testng入门教程 TestNG执行多线程测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者 ...

  10. Docker深入浅出3-容器管理

    docker客户端非常简单,我们可以直接输入docker命令来查看Docker客户端所有的命令项 [root@admin-fxr ~]# docker Usage: docker COMMAND A ...