构建 Maven 项目

  • 通过官方的 Spring Initializr 工具来产生基础项目,访问 http://start.spring.io/ ,如下图所示,该页面提供了以Maven构建Spring Boot 项目的功能。

  • 选择构建工具 Maven Project,Spring Boot 版本选择 1.5.4,填写 Group 和 Artifact 信息,在Search for dependencies 中可以搜索需要的其他依赖包,这里我们需要实现 RESTful API,所以可以添加 Web 依赖。
  • 点击 Generate Project 按钮下载项目的压缩包,并且解压项目包
  • 使用 IDE 导入项目,以 Intellij IDEA 14 为例,从菜单中选择 File->New->Project from Existing Sources…,选择解压的项目文件夹 的 POM.xml 文件,并点击 OK 按钮,一直点击 Next ,这样我们就创建了一个最基础的Spring Boot 工程

工程结构解析

如上图所示,Spring Boot 的基础结构有三大块(具体路径根据用户生成项目时填写的Group和Artifact有所差异)

  • src/main/java:主程序入口 SpringbootDemoApplication,可以通过直接运行该类来启动 Spring Boot应用
  • src/main/resources:配置目录,该目录用来存放应用的一些配置信息,比如应用名、服务端口、数据库配置等。由于我们应用了Web模块,因此产生了 static目录与templates目录,前者用于存放静态资源,如图片、CSS、JavaScript等;后者用于存放Web页面的模板文件。
  • src/test:单元测试目录,生成的 SpringbootDemoApplicationTests 通过 JUnit4实现,可以直接用运行 Spring Boot应用的测试。

Maven配置分析

打开当前工程下的 pom.xml 文件,可以看到如下关键配置:

  • 设置当前项目的父项目,配置如下

        <parent>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-starter-parent</artifactId>

                <version>1.5.4.RELEASE</version>

                <relativePath/>
<!-- lookup parent from repository -->

        </parent>

  • 设置项目源码文件的编码和JDK版本,配置如下

        <properties>

                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

                <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

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

        </properties>

  • 设置项目依赖,spring-boot-starter-web 项目为全栈Web开发模块,包含嵌入式 Tomcat、Spring MVC;spring-boot-starter-test项目为通用测试模块,包含 JUnit、Hamcrest、Mockito 配置如下

        <dependencies>

                <dependency>

                        <groupId>org.springframework.boot</groupId>

                        <artifactId>spring-boot-starter-web</artifactId>

                </dependency>

 
 

                <dependency>

                        <groupId>org.springframework.boot</groupId>

                        <artifactId>spring-boot-starter-test</artifactId>

                        <scope>test</scope>

                </dependency>

        </dependencies>

实现
RESTful
API

在Spring
Boot
中创建一个RESTFul
API
的实现代码同
Spring
MVC一样,只是不需要Spring MVC那样先做很多配置,步骤如下:

  • 新建
    HelloController
    类,代码如下:

    @RestController

    public class HelloController {

            @RequestMapping ("/hello")

            public String index() {

                    return
    "Hello World";

            }

    }

  • 启动应用,通过
    http://localhost:8080/hello
    ,我们可以看到返回了预期的结果:Hello
    World

启动
Spring
Boot
应用

启动
Spring
Boot
应用的方式很多种:

  • 作为一个Java应用程序,可以直接通过运行拥有的main函数的类来启动
  • 在服务器上部署运行时,通常先使用
    mvn
    install
    将应用打包成
    jar包,再通过
    java
    -jar
    xxx.jar 来启动应用

编写单元测试

在Spring
Boot
中实现单元测试很方便,我们打开
src/test
下的单元测试入口 SpringbootDemoApplicationTests 类,编写一个简单的单元测试来模拟
HTTP
请求,测试代码如下:

import org.junit.Before;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.http.MediaType;

import org.springframework.test.context.junit4.SpringRunner;

import org.springframework.test.web.servlet.MockMvc;

import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import org.springframework.test.web.servlet.setup.MockMvcBuilders;

 
 

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

 
 

@RunWith (SpringRunner.class)

@SpringBootTest

public class SpringbootDemoApplicationTests {

 
 

        private MockMvc mvc;

 
 

        @Before

        public
void
setUp() {

                mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();

        }

 
 

        @Test

        public
void
helloTest() throws Exception {

                mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON_UTF8))

                                .andExpect(status().isOk())

                                .andExpect(content().string("Hello World"));

        }

 
 

}

代码解析如下:

  • @RunWith (SpringRunner.class):引入Spring 对JUnit4的支持
  • MockMvc 对象:用于模拟调用 Controller 的接口发起请求,在 helloTest 测试用例方法中,perform 函数执行一次请求调用,accept 用于执行接收的数据类型,andExpect 用于判断接口返回的期望值
  • @Before:JUnit中定义在测试用例 @Test 内容执行前预加载的内容,这里用于初始化 MockMvc 实例

 
 

 
 

笔记:Spring Boot 项目构建与解析的更多相关文章

  1. Spring Boot - 项目构建与解析

    构建 Maven 项目 通过官方的 Spring Initializr 工具来产生基础项目,访问 http://start.spring.io/ ,如下图所示,该页面提供了以Maven构建Spring ...

  2. Spring Boot项目构建

    环境准备 IDEA+JDK 1.8+Maven+mysql+SSM 1.使用Spring Boot框架可以大大加速Web应用的开发过程,首先在Maven项目依赖中引入spring-boot-start ...

  3. 基于Gradle的spring boot 项目构建

    今天听只是分享,听到不用maven而使用Gradle构建,就尝试了下 Java三大构建工具:Ant.Maven和Gradle Gradle是一个基于Apache Ant和Apache Maven概念的 ...

  4. Spring框架学习笔记(6)——阿里云服务器部署Spring Boot项目(jar包)

    最近接外包,需要部署服务器,便是参考了网上的几篇博文,成功在阿里云服务器成功部署了Spring Boot项目,特记下本篇笔记 Spring Boot项目打包 这里说一下部署的一些问题 1.mysql驱 ...

  5. 使用docker构建第一个spring boot项目

    在看了一些简单的docker命令之后 打算自己尝试整合一下docker+spring boot项目本文是自己使用docker+spring boot 发布一个项目1.docker介绍 docke是提供 ...

  6. 使用Docker部署Spring boot项目

    Docker是一个使用广泛的Linux容器管理工具包,它允许用户创建镜像,并将其容器实例化.通过本指南,我们可以学习到如何使用Docker部署Spring Boot项目. 先决条件 开发之前,你必须具 ...

  7. 用Gradle构建Spring Boot项目

    相比起Maven的XML配置方式,Gradle提供了一套简明的DSL用于构建Java项目,使我们就像编写程序一样编写项目构建脚本.本文将从无到有创建一个用Gradle构建的Spring Boot项目, ...

  8. [读书笔记] 一、Spring boot项目搭建与配置文件

    读书笔记:[JavaEE开发的颠覆者 Spring Boot实战] 作者:汪云飞 从今天开始坚持读书,并记录下此读书笔记. 一,初接触 Spring boot 项目Hello world搭建 1.po ...

  9. spring boot系列01--快速构建spring boot项目

    最近的项目用spring boot 框架 借此学习了一下 这里做一下总结记录 非常便利的一个框架 它的优缺点我就不在这背书了 想了解的可以自行度娘谷歌 说一下要写什么吧 其实还真不是很清楚,只是想记录 ...

随机推荐

  1. Ambari安装小记

    在Ambari配置过程中,组件的定制与分配很重要

  2. 初版python计算器

    作业: 使用正则表达式实现计算器功能. 实现: 1.实现带括号的计算 2.实现指数.加减乘除求余等功能 先看运行结果: 请输入您的计算式: 1 - 2 * ( (60-30 +(-40.0/5) * ...

  3. Android(Java)利用findbugs进行代码静态检查

    主要介绍利用java静态代码检查工具findbugs进行代码检查,包括其作用.安装.使用.高级功能(远程review和bug同步). 虽然Android提供了Test Project工程以及instr ...

  4. C# IEnumerable 和 IEnumerator接口浅析

    温故而知新,可以为师矣,有空经常复习一下基础知识是有必要的,并且能加深理解和记忆. Foreach常用于循环访问集合,对实现IEnumerable的接口的容器进行遍历,IEnumerable和IEnu ...

  5. 深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)

    一.CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 二.LeNet-5网络 输入尺寸:32 ...

  6. 多线程之倒计时器CountDownLatch和循环栅栏CyclicBarrier

    1.倒计时器CountDownLatch CountDownLatch是一个多线程控制工具类.通常用来控制线程等待,它可以让一个线程一直等待知道计时结束才开始执行 构造函数: public Count ...

  7. 【BZOJ5093】图的价值(第二类斯特林数,组合数学,NTT)

    [BZOJ5093]图的价值(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 单独考虑每一个点的贡献: 因为不知道它连了几条边,所以枚举一下 \[\sum_{i=0}^{n-1}C_{n-1 ...

  8. 【CJOJ1793】【USACO 4.3.2】素数方阵

    题面 Description 在下面的方格中,每行,每列,以及两条对角线上的数字可以看作是五位的素数.方格中的行按照从左到右的顺序组成一个素数,而列按照从上到下的顺序.两条对角线也是按照从左到右的顺序 ...

  9. idea Artifact mdn:war exploded: Server is not connected. Deploy is not available.

    idea 启动tomcat报的错误,启动tomcat无效 看了网上的好几种说发 说删除tomcat/bin/catalina.bat  里的JAVA_OPTS= -Xms512M -Xmx512M - ...

  10. PHP 接口 返回构造函数

    我们写接口的时候,需要返回json数据,并且里面有错误码,错误信息 还有要返回的数据,这里我构造了一个函数 这里是针对TP5来写的,自己可以根据自己的框架来修改 这样就可以在返回的时候直接用info函 ...