微信公众号:一个优秀的废人
如有问题或建议,请后台留言,我会尽力解决你的问题。

前言

哎呦喂,按照以往的惯例今天周六我的安排应该是待在家学学猫叫啥的。但是今年这种日子就可能一去不复返了,没法办法啊。前几天年轻,立下了一周至少更两篇文章的 flag 。废话少说,今天接着前文给你们带来了第一个 SpringBoot 工程的详解。

第一个 SpringBoot 工程

前文已经说过了 SpringBoot 工程的创建,这里不再赘述,还不会的朋友,请看下面这篇文章。

如何使用 IDEA 构建 Spring Boot 工程

学过编程的都知道,学习一门新语言的第一个项目肯定是 Hello World 。那这里也不例外,我们先创建一个非常简单的 Hello World 工程。给大家讲解 SpringBoot 的项目目录。创建信息如下:

由于本文重点旨在讲解 SpringBoot 的项目目录。所以选择的依赖包非常简单,就选择 Web 足矣。

SpringBoot 项目目录详解

创建成功之后的 SpringBoot 项目目录如下,以下对各主要目录的作用进行讲解:

  • src 是整个工程的根目录,基本上做 web 开发你的代码大部分都放在这里。其中 main 目录下放置的是你的 Java 代码;resource 目录,顾名思义就是放置配置文件、静态资源( static )以及前端模板( template )。
  • test 目录就是放置你的单元测试代码。
  • target 就是项目编译生成的目录,里面包含代码编译后的 class 文件以及一些静态资源和配置文件。
  • External Libraries 这里放置了,pom.xml 导入的依赖包。
  • 其他没提到的目录都是不重要的。

由上图项目目录,可以看到有几个文件,这些文件有些是我新建的,有些是项目生成的。下面我会讲解:

  • pom.xml 这个文件是整个项目最重要的文件,它包含了整个项目的依赖包。Maven 会根据这个文件导入相关的我们开发需要的依赖包。代码如下:

可以看到 pom.xml 中一共有 4 个依赖,其中只有 Junit 是我手动加入的,用于单元测试。

其他的如 Spring Boot 启动父依赖、Spring Boot web依赖 、Spring Boot web test依赖都是创建项目时,勾选 web 选项卡而生成的。这几个依赖包的额作用就是 内嵌 Tomcat 容器,集成各 Spring 组件。比如 如果没有依赖 web 包 ,Spring 的两大核心功能 IOC 和 AOP 将不会生效。

<?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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.nasus</groupId><artifactId>helloworld</artifactId><version>0.0.1-SNAPSHOT</version><name>helloworld</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><!-- Spring Boot 启动父依赖 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><dependencies><!-- Spring Boot web依赖 --><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><!-- Junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
  • HelloworldApplication.java 最为重要,它由项目生成,是整个工程的应用启动类 main 函数。代码由项目生成,代码如下:SpringApplication 引导应用,并将 HelloworldApplication 本身作为参数传递给 run 方法。具体 run 方法会启动嵌入式的 Tomcat 并初始化 Spring环境及其各 Spring 组件。

需要注意的是,这个类必须放在其他类的上册目录,拿上述目录举个栗子, 若其他HelloWorldController.java 类位于 com.nasus.controller 下。则 HelloworldApplication.java 类必须放置在 com.nasus 下或者 com 下(层级必须大于其他 java 类)。否则启动项目访问会报 Whitelabel Error Page 错误,原因是项目扫描不到 @RestController、@RequestMapping 等注解配置的方法和类。

package com.nasus.helloworld;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class HelloworldApplication {public static void main(String[] args) {SpringApplication.run(HelloworldApplication.class, args);}
}
  • HelloWorldController 是我手动编写的,代码如下:@RestController 和 @RequestMapping 注解是来自 SpringMVC 的注解,它们不是 SpringBoot 的特定部分。

其中 @RestController 注解的作用是:提供实现了 REST API,可以服务 JSON、XML 或者其他。这里是以 String 的形式渲染出结果。

其中 @RestController 注解的作用是:提供路由信息,"/“路径的HTTP Request都会被映射到sayHello方法进行处理。

具体参考,Spring 官方的文档《Spring Framework Document》

package com.nasus.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** Project Name:helloworld <br/>* Package Name:com.nasus.controller <br/>* Date:2019/1/5 13:59 <br/>* <b>Description:</b> TODO: 描述该类的作用 <br/>** @author <a href="turodog@foxmail.com">nasus</a><br/>* Copyright Notice =========================================================* This file contains proprietary information of Eastcom Technologies Co. Ltd.* Copying or reproduction without prior written approval is prohibited.* Copyright (c) 2019 =======================================================*/
@RestController
public class HelloWorldController {@RequestMapping("/hello")public String sayHello() {return "Hello,World!";}}

写完 Controller 层的代码,我们就可以启动此项目。点击 IDEA 项目启动按钮,效果如下:

  • 好的程序必须配备完善的单元测试。HelloWorldControllerTest.java 文件是由我编写的主要作用就是测试 HelloWorldController.java 中的方法。这里用的是 Junit 依赖包进行单元测试,代码如下:这里的逻辑就是测试 HelloWorldController.java 的 sayHello 方法输出的字符是否是 Hello,World!
package com.nasus;import static org.junit.Assert.assertEquals;
import com.nasus.controller.HelloWorldController;
import org.junit.Test;/*** Project Name:helloworld <br/>* Package Name:com.nasus <br/>* Date:2019/1/5 14:01 <br/>* <b>Description:</b> TODO: 描述该类的作用 <br/>** @author <a href="turodog@foxmail.com">nasus</a><br/>* Copyright Notice =========================================================* This file contains proprietary information of Eastcom Technologies Co. Ltd.* Copying or reproduction without prior written approval is prohibited.* Copyright (c) 2019 =======================================================*/
public class HelloWorldControllerTest {@Testpublic void testSayHello() {assertEquals("Hello,World!",new HelloWorldController().sayHello());}}

编写完成之后,可以通过以下按钮启动单元测试类。

测试结果如下:可以看到红圈框住的地方,出现这个绿色标志证明单元测试没问题。sayhello 方法的结果是对的。

后语

我为什么要写这种这么简单的教程?
是这样的,我始终认为比我聪明的人有很多,但比我笨的人也不少。在中国有很多你认为众所周知的事,其实有一车人根本不知道,这篇文章哪怕只帮助到一个人,足矣。

之后我打算出一个 SpringBoot 系列的教程,敬请关注与指正,本人也是一个小菜鸟在打怪升级中,如本文有不正确的地方,烦请指正。一起学习一起进步。

以上就是我对 SpringBoot 工程的理解,希望对你们有帮助。最后,对 Python 、Java 感兴趣请长按二维码关注一波,我会努力带给你们价值,如果觉得本文对你哪怕有一丁点帮助,请帮忙点好看,让更多人知道。

另外,关注之后在发送 1024 可领取免费学习资料。资料内容详情请看这篇旧文:Python、C++、Java、Linux、Go、前端、算法资料分享

SpringBoot 实战 (二) | 第一个 SpringBoot 工程详解相关推荐

  1. SpringBoot整合JDBC、整合Druid数据源详解教程

    目录 一.整合JDBC 1. 环境准备 1. 创建数据库 2. 创建SpringBoot项目 3. IDEA连接数据库 2. 编写数据库配置信息 3. 编写测试类测试 4. CRUD操作数据库 1. ...

  2. SpringBoot——slf4j+logback日志处理及配置详解

    SpringBoot--sl4j+logback日志处理及配置详解 日志的级别 打印级别:ALL > TRACE > FATAL > DEBUG > INFO > WAR ...

  3. SpringBoot配置文件中spring.profiles.active配置详解

    SpringBoot配置文件中spring.profiles.active配置详解 1.多环境配置 我们在开发Spring Boot应用时,通常同一套程序会被应用和安装到几个不同的环境,比如:开发.测 ...

  4. html页面设置拦截器,SpringBoot拦截器Filter的使用方法详解

    SpringBoot拦截器Filter的使用方法详解 发布时间:2020-08-27 22:44:03 来源:脚本之家 阅读:107 作者:玉天恒 前言: 最新Servlet 3.0拦截器的使用 1. ...

  5. [python opencv 计算机视觉零基础到实战] 四、了解色彩空间及其详解

    一.学习目标 了解什么是色彩空间 了解opencv中色彩空间的转换 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的helloworld [[python opencv ...

  6. 002 Android之helloworld工程详解

    文章目录 安卓开发环境 Android SDK adb 创建第一个hello world工程 hello world工程详解 manifests清单文件 java源码 res资源 安卓文件目录总结 安 ...

  7. 导出jar插件_Fluttify输出的Flutter插件工程详解

    系列文章: yohom:Fluttify输出的Flutter插件工程详解​zhuanlan.zhihu.com yohom:开发Flutter插件必备原生SDK->Dart接口生成引擎`Flut ...

  8. docker 容器 exited_Docker实战006:docker容器使用详解

    Docker容器也是docker的核心成员,是docker镜像的一个运行实例.一个镜像可以创建多个容器,多个容器也可以在同一台机器上运行并与其他容器共享操作系统内核同时将应用程序与系统其它周围环境隔离 ...

  9. python数据挖掘课程】二十一.朴素贝叶斯分类器详解及中文文本舆情分析

    #2018-04-06 13:52:30 April Friday the 14 week, the 096 day SZ SSMR python数据挖掘课程]二十一.朴素贝叶斯分类器详解及中文文本舆 ...

  10. python数据挖掘笔记】二十.KNN最近邻分类算法分析详解及平衡秤TXT数据集读取

    #2018-04-06 07:57:00 April Friday the 14 week, the 096 day SZ SSMR python数据挖掘笔记]二十.KNN最近邻分类算法分析详解及平衡 ...

最新文章

  1. CCSprite setTextureRect 的坐标的坑
  2. CC2530-Zstack 协议栈MAC层中的mac_rx.c程序解读
  3. 计算机英语教程第6版司爱侠,计算机专业英语教程(第3版)宋德福 司爱侠 练习参考答案...
  4. 童话镇计算机乐谱,童话镇简谱(歌词)-陈一发演唱-桃李醉春风记谱
  5. 特征匹配 + 单应性查找对象
  6. DESeq2差异基因分析和批次效应移除
  7. opencv调试利器ImageWatch的安装使用
  8. 活动选择(信息学奥赛一本通-T1323)
  9. 学习Java之前的一些话
  10. 随记(五)--上传图片耗时问题
  11. 28、深入浅出MFC学习笔记,View功能的加强和重绘效率的提高
  12. 命令前加./ ,在后台运行程序 linux批处理 linux自动运行程序
  13. Tesseract调用日文识别模型
  14. Avaya Aura™ 独家观察报告
  15. 戴尔刀片服务器型号在哪里,戴尔 PowerEdge M640 刀片式服务器:服务器 | Dell 中国大陆...
  16. Ardunio测试817光电耦合交流电过零检测模块
  17. 从gnuplot到GeoGebra的艰难之旅
  18. jacob 给word 指定位置添加超级链接
  19. android material design主题在线配色
  20. Linux学习5之查找文件中的某个字符串并返回所在行号

热门文章

  1. 飘逸的python - 几行代码实现unix管道风格的函数调用
  2. 【机器学习】EM算法详细推导和讲解
  3. qq音乐的歌词接口中例如#58,#46的特殊符号编码使用js进行转义
  4. python工具包: argparse
  5. 漫威蜘蛛侠Mac动态壁纸
  6. HDU 4009 不定根最小树形图
  7. Flask框架-模板
  8. 当vue遇到pwa--vue+pwa移动端适配解决方案模板案例
  9. 《Python算法教程》——2.4 请提防黑盒子
  10. iOS开发网络篇—大文件的多线程断点下载