RESTfull API简单项目的快速搭建

spring框架盛行了多年的java方向开发人员来说,每个人java开发已经把spring框架当做开发中不可或缺的一部分。之前传统的模式都是以applicationContext.xml配置文件的形式存在,而对应大多数入门级开发人员来说配置出现一点纰漏就会导致运行失败或者更大的问题,因此会浪费开发人员很多宝贵的时间,对公司来说也是有所损失。那么spring开源组织很早之前就意识到这种问题的存在,于是他们便对spring框架的全系列组件进行了内部封装。对外只是提供**maven(jar管理、项目打包工具)或者gradle(新兴jar管理、项目打包工具)**的形式来进行引入parent.pom(maven配置文件)或者parent.gradle(gradle配置文件),让每一个spring项目都是以spring的子项目的形式来运行,这样开发人员不用再去注重配置文件的繁琐而是把精力放到业务逻辑以及更深层次的架构方面。自此SpringBoot就诞生了,它有着纯正的开源血统,在此非常感谢spring开源组织给我们java开发人员带来的便利!

SpringBoot主要优点:

  1. 为所有Spring开发者更快的入门
  2. 开箱即用,提供各种默认配置来简化项目配置
  3. 内嵌式容器简化Web项目
  4. 没有冗余代码生成和XML配置的要求
  5. 提供一系列大型企业级项目的功能性特性(比如:安全、健康检测、外部化配置、数据库访问、restful搭建等很多特性这里就不一一叙说了,后期文章会陆续更新)

本章目的

使用springboot完成一个简单的web(springmvc)应用程序,通过@restController输出"HelloWord"到界面,让我们初步体验springboot的快速开发、简单的特性。

系统要求

  1. jdk1.8
  2. springboot 1.5.2.RELEASE
  3. 开发工具(IntelliJ IDEA 2017.1.1)
  4. 数据库管理工具(Navicat Premium 11.1.7)
  5. 文本管理工具(sublime text 3)
  6. apache maven(3.3.9,本章采用maven形式管理jar包,具体配置环境变量以及使用请自行查找资料)

开始构建项目

目前构建项目有多种方式我这里简单介绍两种。
1、使用spring官网 SPRING INITIALIZR 来构建项目结构(地址:http://start.spring.io/)
2、使用IntelliJ IDEA开发工具来构建项目结构

使用SPRING INITIALIZR构建

访问start.spring.io/网址就会看到如下 “图1” 界面:
界面主要部分包括:管理工具,springboot版本,包名(group),工程名(Artifact),已选模块(我已经选择了一个web模块)。

点击Generate Project就会下载一个根据你输入的信息创建的项目工程架构源码的压缩包。
解压压缩包到指定目录(目录你可以随意定义)我这里为了后续操作先定义到E:/lessions内可以看到如下“图2”所示:

解压完成之后我们就可以通过IntelliJ IDEA开发工具导入到工程,

  1. 菜单中选择File–>New–>Project from Existing Sources…
  2. 选择解压后的项目文件夹,点击OK
  3. 点击Import project from external model并选择Maven,点击Next到底为止。
  4. 若你的环境有多个版本的JDK,注意到选择Java SDK的时候请选择系统安装1.8版本

使用IntelliJ IDEA构建

打开工具,界面如下 “图3” 所示:

我们点击Create New Project来创建一个新的springboot应用程序,点击后如下“图4”所示:

我们点击Next继续下一步操作,根据界面输入选项填写对应的内容即可如“图5”所示:

点击Next即可完成创建项目,而且创建完成后会自动导入到项目工程内就不需要再次import操作,这种方式会比较简单些,所以我们的文章内都会采用第二种形式来创建新工程。

在下一步我们勾选Web依赖加入到我们的项目中,如下图所示:

项目目录结构

我们来看看工具为我们生成新工程的目录结构,如”图6“所示:

我们可以看到目录结构有如下几个:

1、/src/main/java/ 存放项目所有源代码目录
2、/src//main/resources/ 存放项目所有资源文件以及配置文件目录
3、/src/test/ 存放测试代码目录

自动生成的文件解释

SpringBoot21Application 该类是程序的入口类内有个main方法,可以直接通过run as运行项目
application.properties 该配置文件是项目的核心配置文件,以xx.xx.xx的形式存在
pom.xml maven配置文件,因为我们采用的maven管理jar,所以这里会自动生成一个pom文件

@SpringBootApplication注解

我们可以看到工具为我们自动生成的入口程序是有@SpringBootApplication的这么一个注解,那它主要是做什么的呢?不难看出,它是声明当前类为sprinboot的入口类。而一个springboot项目内有且只能有一个这个注解存在。

初尝试运行项目

我们在入口程序类中右键->Run LessonOneApplication在控制台的输出如下”图8“所示,证明你已经成功的运行了springboot项目。

可以看到我们的项目是通过内置的tomcat容器启动的,并且端口号默认是8080(至于如何修改端口号后期文章中更新)。我们现在通过浏览器直接访问是得不到任何回应的,只是会有一个错误页面,如下”图9“所示

编写IndexController

我们首先在**/src/main/java/com/lqg** (该目录是你构建项目的目录) 目录下创建一个叫做controller的包,然后在controller包下再创建一个叫做IndexController的类,我们使用@RestController来声明我们新创建的IndexController是一个访问控制器,详细代码如下:

package com.lqg.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping(value = "/index")
public class IndexController {@RequestMappingpublic String index(){return "hello spring boot";}
}

可以看到我在IndexController类上配置了一个**@RequestMapping**注解来声明index()方法可以通过127.0.0.1:8080/index访问到,那么我们接下来重新启动项目(项目中如果重启出错应该是注解配置问题),访问地址如下”图10“所示:

在IndexController类里面在写一个方法,返回值是map集合,参数列表是String类型的name,@RequestParam简单类型的绑定的注解,这个注解要放在参数列表的前面

package com.lqg.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;@RestController
@RequestMapping(value = "/index")
public class IndexController {@RequestMappingpublic String hello(){return "hello spring boot ";}/*** @RequestParam 简单类型的绑定,可以出来get和post* @param name* @return*/@RequestMapping(value = "/get")public HashMap<String,Object> get(@RequestParam String name){HashMap<String,Object> map = new HashMap<>();map.put("title", "hello world");map.put("name", name);return map;}}

那么Controller层是如何返回一个Bean对象呢?先在/src/main/java/com/lqg下面创建一个bean包,在bean包里创建一个User类,详细代码如下:

package com.lqg.bean;import lombok.Getter;
import lombok.Setter;import java.util.Date;/*** @author 凌枫lqg*/
@Getter
@Setter
public class User {private int id;private String name;private Date date;
}

@Getter@Setter:注解是lombok插件里面的,用这个注解就可以省略getter和setter方法

package com.lqg.controller;import com.lqg.bean.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.xml.crypto.Data;
import java.util.Date;
import java.util.HashMap;@RestController
@RequestMapping(value = "/index")
public class IndexController {@RequestMappingpublic String hello(){return "hello spring boot ";}/*** @RequestParam 简单类型的绑定,可以出来get和post* @param name* @return*/@RequestMapping(value = "/get")public HashMap<String,Object> get(@RequestParam String name){HashMap<String,Object> map = new HashMap<>();map.put("title", "hello world");map.put("name", name);return map;}/*** @PathVariable 获得请求url中的动态参数* @param id* @param name* @return*/@RequestMapping(value = "/find/{id}/{name}")public User get(@PathVariable int id,@PathVariable String name){User user = new User();user.setId(id);user.setName(name);user.setDate(new Date());return user;}
}

第二个方法访问的结果如下

第三个方法访问的结果如下:

SpringBoot的测试

SpringBoot测试可以通过Spring提供的测试类MockMvc

package com.lqg;import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;import com.lqg.controller.IndexController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;import com.lqg.controller.IndexController;@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootDemo21ApplicationTests {//SpringBoot测试可以通过Spring提供的测试类MockMvcprivate MockMvc mvc;@Beforepublic void setup() {//这是通过setup方法引入mvcthis.mvc = MockMvcBuilders.standaloneSetup(new IndexController()).build();}@Testpublic void contextLoads() throws Exception {//生成request一个请求RequestBuilder request = get("/index");//用mvc的请求,期望它的状态码是ok的,期望它返回的内容,返回的是一个字符串hello spring bootmvc.perform(request).andExpect(status().isOk()).andExpect(content().string("hello spring boot"));}}

SpringBoot打包

打包成功后的jar包,打包命令mvn clean install -DskipTests

在命令行运行spring boot

RESTfull API简单项目的快速搭建相关推荐

  1. 第4天-搭建项目(快速搭建电商平台后台管理系统及逆向生成微服务基本功能)

    1.快速搭建电商平台后台管理系统 目前在Gitee开源软件中,人人开源 和 若依 关注度比较高,优品电商平台后台系统采用人人开源的框架 来快速构建,完成基本的CRUD,开发更加关注复杂业务.高并发.高 ...

  2. 简单易学sa-token快速搭建——权限认证《一》

    快速搭建--权限认证<一> 环境搭建 全局拦截规则 功能实现(登录,注销,封禁,踢下线) 注解鉴权 拦截规则(进阶版) 补充(切换账号) 环境搭建 sa-token官网文档 redis安装 ...

  3. linux搭建简单聊天环境,快速搭建Linux环境-运维必备

    Vagrant快速搭建Ubuntu虚拟机环境 1.开启虚拟机服务 Windows启动配置:Intel Virtualization Technology -> Enabled 2.下载安装Vir ...

  4. 【golang】go-admin系统进行项目开发,还是一个非常不错的项目,使用golang做管理后台,非常方便项目的快速搭建,基础功能鉴权已经完善了,就需要开发相关的业务逻辑即可。

    目录 前言 1,关于go-admin 2,使用go-admin进行构建 3,使用go-admin进行数据库,后端初始化 4,下载前端代码,进行node编译 4,总结 前言 本文的原文连接是: http ...

  5. 【华为云实战开发】9.如何进行PHP项目的快速搭建并实现CICD?

    1 概述 1.1 文章目的 本文主要想为研发PHP项目的企业或个人提供上云指导,通过本文中的示例项目 "workerman-todpole",为开发者提供包括项目管理,代码托管,代 ...

  6. 实用篇 | 简单的可快速搭建的个人网站方式及工作原理

    免费搭建个人网站的几种方式: 1:使用GitHub搭建 2:使用google site搭建(不用写代码) 3:使用nicepage搭建(不用写代码)个人喜爱推荐 目录 一:使用GitHub搭建 Ste ...

  7. java 快速构建ssm项目_SSM快速搭建

    基本环境搭建 1. 创建Maven工程 2. 导入项目相关依赖的jar包 spring springmvc mybatis mysql junit spring-test lombok devtool ...

  8. 快速搭建博客-简单篇之快速搭建

    原文地址:点此查看效果 文章目录 开篇博客-说明 第一次创建命令 致谢 开篇博客-说明 专注分享JAVA全栈技术,JAVA零基础到高级,数据结构,框架,设计模式,微服务,中间件,大数据,网络爬虫,开源 ...

  9. storyboard搭建项目_Storyboard 快速搭建UICollectionView

    一.在VC里添加CollectionView,在CollectionView中cell直接添加控件,设置约束 1 二.设置好相关代理 2 三.抄写代码 3.1 遵守协议 3.2 自定义cell(不需要 ...

  10. Spring-Boot快速搭建web项目详细总结

    最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建 ...

最新文章

  1. Java读取property配置文件
  2. Entity Framework 6 Recipes 2nd Edition(10-6)译 - TPT继承模型中使用存储过程
  3. Torchvision目标检测模型训练过程记录
  4. HarmonyOS之HiTrace日志跟踪定位分析
  5. 百度echars 插件 横坐标信息倾斜显示
  6. 【Mac】nsurlsessiond 后台下载问题的解决方法
  7. Android下OpenSLES播放PCM音频文件
  8. 嵌入式Linux开发与单片机开发的区别
  9. origin三图合一_神教程:Origin也能玩转图片拼接组合排版
  10. 操作系统(2)复习 第八章 磁盘存储器的管理
  11. 解决IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Pyth
  12. 该网页无法正常运作 目前无法处理此请求。 HTTP ERROR 500
  13. C++中 stol()和stoll()
  14. Kotlin 之 lateinit关键字 与lazy
  15. java 实体字段校验@Valid - @NotNull @NotEmpty @NotBlank - ValidExceptionHandler
  16. CAS统一身份认证(四):集成MySQL用户验证
  17. 《墨水心》(Inkheart)
  18. 一代宗师陨落!84岁华人计算机视觉泰斗Thomas S. Huang 仙逝,李飞飞等沉痛悼念黄煦涛教授...
  19. 四招搞定心仪的offer
  20. 麻省理工公开课:线性代数》中文笔记来了

热门文章

  1. 浅析大数据给我们带来的便利和好处
  2. 5月14日 打印100以内与7有关的数
  3. Java用OpenOffice将word转换为PDF并预览
  4. Android基础篇 读取 Assets 文件夹中的文件
  5. feign api Ambiguous mapping
  6. mongodb默认的用户名密码_MongoDB 用户名密码登录
  7. 牛客网 2018校招真题 吉比特 直线上的点
  8. UINO优锘:DCV产品发展历程
  9. 人生的苦难需要时间去磨练
  10. python第三方库 invalid requirement_python第三方库安装出问题