• Spring Boot


    构建 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 实例

       

       

  • 相关阅读:
    Git学习总结(11)——Git撤销操作详解
    Spring学习总结(18)——Spring整合Mysql数据库一主多从、多主多从配置
    Java Web学习总结(27)——JavaEE中Web服务器、Web容器、Application服务器区别及联系
    ZT onActivityResult在android中的用法
    转一个csdn看到的帖子:而立之年的程序猿失业了 [问题点数:0分,结帖人jinxingfeng_cn]
    [EffectiveC++]item39:明智而审慎地使用private
    [EffectiveC++]item38:通过复合塑膜出has -a 或“根据某物实现出”
    zt C++ list 类学习笔记
    zt C++标准库set类型
    [EffectiveC++]item37:绝不重新定义继承而来的缺省参数值
  • 原文地址:https://www.cnblogs.com/li3807/p/9002567.html
Copyright © 2020-2023  润新知