构建 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. canvas API总结

    从简单的基本图形,到复杂炫酷的动画,通过canvas元素获取的2D图形渲染上下文CanvasRenderingContext2D,能够使用丰富的API来进行图形绘制.这篇文章将会总结在之前的canva ...

  2. 吐槽版︱MRO-Microsoft R Open快捷键+界面识别+功能设置

    下载了之后,发现连运行(RUN键)在哪都不知道,蒙逼的在哪倒弄半天,都执行不了...问了别人,都说"ctrl+enter",但是我的电脑执行不了,于是今天就狠狠的一个一个按钮的点一 ...

  3. hi3531芯片的标识寄存器

    芯片的标识寄存器 0xee0.0xee4.0xee8.0xeec(基址是0x2005_0000) 系统控制器提供了芯片标识(ID)寄存器SC_SYSID.这个标识寄存器是一个概念上 的32bit 的标 ...

  4. dojo省份地市级联之省份Dao接口类(三)

    dojo省份地市级联之省份Dao接口类 ProvinceDao.java: /** * 省份-Dao */ package com.you.dao; import java.util.List; im ...

  5. WIN7 嵌入式系统安装教程 Windows Embedded Standard 2011 安装

    轻松构建你的第一个 Windows Embedded Standard 2011 镜像.通过本文你可以快速掌握如何使用Windows Embedded Standard 2011 CTP1 来构建一个 ...

  6. Caused by:org.hibernate.HibernateException:Unable to make JDBC Connection

    1.错误描述 Caused by:org.hibernate.HibernateException:Unable to make JDBC Connection[jdbc\:mysql\://loca ...

  7. tar (child): jdk-7u71-linux-x64.tar.gz:无法 open: 没有那个文件或目录

    1 错误描述 youhaidong@youhaidong:~$ sudo mkdir /usr/lib/jvm [sudo] password for youhaidong: youhaidong@y ...

  8. hihocoder Challenge 29 A.序列的值

    我现在就感觉我这人现在真的没有dp的意识 其实真写起来也不难,但是把就是练的少思维跟不上,dp从根本上就是一种状态的提炼和聚集. 按照题解的意思来,表示二进制第i位的值为j(0,1)的组合有多少,然后 ...

  9. JVM 调优系列之图解垃圾回收

    摘要: jvm必知系列,总结一些常见jvm回收机制,方便查阅 对于调优之前,我们必须要了解其运行原理,java 的垃圾收集Garbage Collection 通常被称为"GC", ...

  10. order by group by

    order by 后 group by连用, mysql好像 >5.4不起作用 通过 explain 查看执行计划,可以看到没有 limit 的时候,少了一个 DERIVED 操作 估计是内部优 ...