Hello world

1前言

  作为程序员,每入门一门技术,都是从hello world开始.接下来,就写个简单的helloword spring boot项目..

1环境准备

以下环境是本人的开发环境:

(1)JDK1.8_131

(2)Maven 3.3.9

(3)IDEA 2017.1.3

(4)git 2.7.4

2 小试牛刀之Hello World

 工程项目的github传送门:(https://github.com/simos-code/springboot-quick-start.git).启动后,在浏览器输入:

http://localhost:8080/hello,浏览器上就出现:"hello world".如下图所示:


请求成功

  通过这个简单的项目我们可以看到spring boot在大大降低了我们使用spring框架的难度,复杂度.只需要简单的几行代码,就可以构建一个spring应用.没有任何额外的配置文件.

3庖丁解牛Hello World

  下图是我们hello world项目的目录结构图,麻雀虽小,五脏俱全.通过分析这个最简单的demo,我们可以看到spring boot在spring框架的基础上提供了什么.然后对spring boot原理有个大致的概念,否则很多时候,自己的项目构建起来后,业务功能也实现了,框架怎么运行没有了解,真正需要自己去实现一些框架本身没有提供的功能,百度找不到相关例子的时候,就一筹莫展.掌握基本原理,就可以依样画瓢,实现自己想要的功能.

Hello world_第1张图片
demo项目结构

3.1maven引入依赖

通过下图来说明在spring boot中如何按需引入各个功能的"starter".

Hello world_第2张图片
maven配置

从maven的配置中可以看到,POM文件中有个parent节点.parent节点主要包含两三个信息:groudId(可以被继承),artifactId(私有),version(可以被继承).就像我们java的继承里一样,parent节点作为其他"starter"节点的父节点,"starter"子节点继承parent后也会包含parent节点的version属性(ps:生产环境使用release版本,这是稳定版),这样整个工程里所有groupId为"org.springframework.boot"的"starter"就有相同version.比如上图中"spring-boot-starter-web"的依赖版本就是通过继承parent得来的.总之一句话,可以通过parent节点统一管理springboot的版本,避免使用不同版本导致maven依赖冲突.这里的"可以",说明大家也可以直接在各个"starter"依赖里头添加指定版本,没有特殊的需求,官方文档也是推荐使用parent节点进行统一的版本管理.springboot官方提供的"starter"列表传送门:starter官方文档链接

3.2 HelloController

接下来我们看看web页面的"hello world"怎么得到的.下图是HelloController代码:


Hello world_第3张图片
HelloController

使用过spring mvc的小伙伴都知道,controller是用来处理web请求的.这里用的注解是@RestController而不是@Controller.在springmvc中,单独使用@Controller时返回的是web页面,如果在请求处理方法(加这个注解的方法最终返回http(s) response不是页面,而是string数据)或者controller类(类里面的所有web请求处理方法返回的都是string数据而不是页面)上添加@ResponseBody则是声明返回给请求的是数据而不是页面.从注解的名字我们就可以知道这个@RestController用来实现restful请求用的,直接给http(s)请求返回string类型的数据.下面是@RestController的源码截图

Hello world_第4张图片
@RestController

@RestController注解源码可以看出,它其实就是组合了注解@Controller@ResponseBody,简化了restful的实现.@RestController中的request处理方法的返回值我会用这个demo的另一个git分支去讲解一下.

3.3QuickStartApplication

接下来我们讲一下springboot的启动入口,先贴断代码截图:


Hello world_第5张图片
main

从图上看,很简单有木有!几行代码一个spring boot应用就启动了,没有任何配置文件.看到main函数入口是不是很熟悉啊,就是一个普通的java工程项目,main方法里头只有一个SpringApplication静态方法run调用.唯一不同的多了个spring boot 的注解@SpringBootApplication,这个注解也是用一篇独立的博客跟大家说说这个注解背后的原理,讲讲run方法.因为篇幅太长,阅读起来不太舒服.

4小结

以上主要配置了一个最最简单的springboot应用,没有任何配置文件,没有多余的注解.后续文章,会基于这个demo慢慢分析springboot基本原理.让大家知其然,也知所以然.

你可能感兴趣的:(Hello world)