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原理有个大致的概念,否则很多时候,自己的项目构建起来后,业务功能也实现了,框架怎么运行没有了解,真正需要自己去实现一些框架本身没有提供的功能,百度找不到相关例子的时候,就一筹莫展.掌握基本原理,就可以依样画瓢,实现自己想要的功能.
demo项目结构3.1maven引入依赖
通过下图来说明在spring boot中如何按需引入各个功能的"starter".
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代码:
HelloController使用过spring mvc的小伙伴都知道,controller是用来处理web请求的.这里用的注解是@RestController而不是@Controller.在springmvc中,单独使用@Controller时返回的是web页面,如果在请求处理方法(加这个注解的方法最终返回http(s) response不是页面,而是string数据)或者controller类(类里面的所有web请求处理方法返回的都是string数据而不是页面)上添加@ResponseBody则是声明返回给请求的是数据而不是页面.从注解的名字我们就可以知道这个@RestController用来实现restful请求用的,直接给http(s)请求返回string类型的数据.下面是@RestController的源码截图:
@RestController从@RestController注解源码可以看出,它其实就是组合了注解@Controller和@ResponseBody,简化了restful的实现.@RestController中的request处理方法的返回值我会用这个demo的另一个git分支去讲解一下.
3.3QuickStartApplication
接下来我们讲一下springboot的启动入口,先贴断代码截图:
main然
从图上看,很简单有木有!几行代码一个spring boot应用就启动了,没有任何配置文件.看到main函数入口是不是很熟悉啊,就是一个普通的java工程项目,main方法里头只有一个SpringApplication静态方法run调用.唯一不同的多了个spring boot 的注解@SpringBootApplication,这个注解也是用一篇独立的博客跟大家说说这个注解背后的原理,讲讲run方法.因为篇幅太长,阅读起来不太舒服.
4小结
以上主要配置了一个最最简单的springboot应用,没有任何配置文件,没有多余的注解.后续文章,会基于这个demo慢慢分析springboot基本原理.让大家知其然,也知所以然.
网友评论