一、SpringBoot是什么

spring Boot可以基于Spring轻松创建可以“运行”的、独立的、生产级的应用程序。 对Spring平台和第三方类库我们有自己看法和意见(约定大于配置),所以你最开始的时候不要感到奇怪。大多数Spring Boot应用程序需要很少的Spring配置。

您可以使用Spring Boot创建可以使用java -jar或传统 war 包部署启动的Java应用程序。 我们还提供一个运行“spring scripts”的命令行工具。

那我们举个栗子:

假设你受命用Spring开发一个简单的Hello World Web应用程序。你该做什么?我能想到一些基本的需要。

1.一个项目结构,其中有一个包含必要依赖的Maven或者Gradle构建文件,最起码要有SpringMVC和Servlet API这些依赖。

2. 一个web.xml文件(或者一个 WebApplicationInitializer 实现),其中声明了Spring的 DispatcherServlet 。

3.一个启用了Spring MVC的Spring配置。

4.一个控制器类,以“Hello World”响应HTTP请求。

5.一个用于部署应用程序的Web应用服务器,比如Tomcat。

最让人难以接受的是,这份清单里只有一个东西是和Hello World功能相关的,即控制器,剩下的都是Spring开发的Web应用程序必需的通用样板。既然所有Spring Web应用程序都要用到它们,那为什么还要你来提供这些东西呢?

而我们要用SpringBoot来写一个HelloWorld的WEB应用程序。我们需要做些什么呢。

1. 设置SpringBoot的Parent

2. 导入SpringBoot的Web支持

3. 在启动类中写一个HelloWorld的方法

4.然后在地址栏中输入:localhost:8080/helloboot,就会出来我们想要的内容。

其实我们用IDEA来开发的话,第一步第二步也不需要我们去做,直接选择SpringIntializr来进行开发就可以了。

所以你现在是不是明白SpringBoot是做什么的,和Spring有什么区别了呢。

二、SpringBoot的特点

1.自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。Spring Boot实现了自动配置,这让Spring能够智能探测正在构建何种应用程序,自动配置必要的组件以满足应用程序的需要。对于那些常见的配置场景,不再需要显式地编写配置了,Spring会替你料理好一切。

2.起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。

3.命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。

4.Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟。

三、代码解释

1、Spring Boot父级依赖,有了这个,当前的项目就是Spring Boot项目了,spring-boot-starter-parent是一个特殊的starter,它用来提供相关的Maven默认依赖,使用它之后,常用的包依赖可以省去version标签。

2、在pom.xml文件中,dependencies是父起步依赖。

Spring Boot通过提供众多起步依赖降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。很多起步依赖的命名都暗示了它们提供的某种或某类功能。

3、Spring Boot提供了很多”开箱即用“的依赖模块,都是以spring-boot-starter-xx作为命名的。举个例子来说明一下这个起步依赖的好处,比如组装台式机和品牌机,自己组装的话需要自己去选择不同的零件,最后还要组装起来,期间有可能会遇到零件不匹配的问题。耗时又消力,而品牌机就好一点,买来就能直接用的,后续想换零件也是可以的。相比较之下,后者带来的效果更好点(这里就不讨论价格问题哈),起步依赖就像这里的品牌机,自动给你封装好了你想要实现的功能的依赖。就比如我们之前要实现web功能,引入了spring-boot-starter-web这个起步依赖。

4、@SpringBootApplication 开启了Spring的组件扫描和Spring Boot的自动配置功能。实际上, @SpringBootApplication 将三个有用的注解组合在了一起。

Spring的 @Configuration :标明该类使用Spring基于Java的配置。

Spring的 @ComponentScan :启用组件扫描,这样你写的Web控制器类和其他组件才能被自动发现并注册为Spring应用程序上下文里的Bean。

Spring Boot 的 @EnableAutoConfiguration :启用 Spring 应用程序上下文的自动配置,试图猜测和配置您可能需要的bean。自动配置类通常采用基于你的 classpath 和已经定义的 beans 对象进行应用。

就是这一行配置开启了Spring Boot自动配置的魔力,让你不用再写成篇的配置了。

5、@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver则不起作用,返回的内容就是Return 里的内容(String/JSON)。
例如:本来应该到success.jsp页面的,则其显示success.

2)如果使用@RestController注解Controller,需要返回到指定页面,则需要配置视图解析器InternalResourceViewResolver,可以利用ModelAndView返回试图。

3)如果使用@Controller注解Controller,如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

SpringBoot学习系列之一相关推荐

  1. java flux api,SpringBoot学习系列-WebFlux REST API 全局异常处理

    本文内容 为什么要全局异常处理? WebFlux REST 全局异常处理实战 小结 摘录:只有不断培养好习惯,同时不断打破坏习惯,我们的行为举止才能够自始至终都是正确的. 一.为什么要全局异常处理? ...

  2. 2.6 springBoot学习笔记(2.6)——- 整合mybatisPlus

    更多文章 更多系列文章在个人网站 springBoot学习系列笔记文章 springBoot学习笔记(1)-- 搭建springBoot项目 文章目录 更多文章 springBoot学习系列笔记文章 ...

  3. SpringBoot源码学习系列之异常处理自动配置

    SpringBoot源码学习系列之异常处理自动配置 1.源码学习 先给个SpringBoot中的异常例子,假如访问一个错误链接,让其返回404页面 在浏览器访问: 而在其它的客户端软件,比如postm ...

  4. 狂神学习系列11:SpringBoot

    狂神学习系列11:SpringBoot 声明: 本文章是基于狂神的课程所编写,本人才疏学浅,内容仅作参考 项目和markdown文件资料: 07_SpringBoot: 基于狂神说SpringBoot ...

  5. httpwebrequest超时时间timeout设置无效_【SpringBoot WEB 系列】RestTemplate 之超时设置...

    [SpringBoot WEB 系列]RestTemplate 之超时设置 一般来讲我们访问外部资源时,需要做一个保护,比如最常见的添加一个超时设置,避免一直被阻塞,RestTemplate 可以通过 ...

  6. 目录:SpringBoot学习目录

    SpringBoot配套源码地址:gitee.com/hengboy/spr- SpringCloud配套源码地址:gitee.com/hengboy/spr- SpringBoot相关系列文章请访问 ...

  7. SpringCloud学习系列之七 ----- Zuul路由网关的过滤器和异常处理

    前言 在上篇中介绍了SpringCloud Zuul路由网关的基本使用版本,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的路由 ...

  8. springboot 设置默认访问index.html_【SpringBoot WEB系列】WebFlux静态资源配置与访问

    [SpringBoot WEB系列]WebFlux静态资源配置与访问 上一篇博文介绍SpringMVC的静态资源访问,那么在WebFlux中,静态资源的访问姿势是否一致呢 I. 默认配置 与Sprin ...

  9. springboot mybatisplus 多数据源_【SpringBoot DB 系列】MybatisPlus 多数据源配置

    [SpringBoot DB 系列]Mybatis-Plus 多数据源配置 前面介绍了两种 Mybatis 的数据源配置,当然也少不了 mybatis-plus MyBatis-Plus (opens ...

最新文章

  1. Python培训教程:pycharm常用的快捷键合集
  2. D-Link云摄像头超过120款产品存在漏洞,约40万台设备受影响
  3. 异常记录-No module named ‘numpy.core._multiarray_umath
  4. python开源项目及示例代码
  5. 定时任务scheduleAtFixedRate设定每天某个时刻执行
  6. Java黑皮书课后题第5章:*5.39(金融应用:求销售总额)假设你正在某百货商店开始销售工作。你的工资包括基本工资和提成。基本工资是5000美元。你的目标是一年挣30000美元,编写程序找最小销售额
  7. java list 排序_Java中List的排序
  8. 放下偏见,原来嵌入式程序员如此“妖娆”!
  9. Python源码深度解析—float类型对象
  10. 用CSS制作细线表格
  11. 大一java期末考笔试_JAVA考试试题及答案
  12. Java音频格式转换,支持amr、aud、slk、silk转成mp3的程序
  13. 虚拟化服务器 戴尔,dell虚拟化服务器配置(戴尔服务器配置)
  14. Spring中同一个类中方法调用事务不生效,非事务方法调用事务方式事务不生效
  15. 算法学习之Trie树
  16. Python入门基础练习题
  17. 公司成立新单位,分公司和子公司哪个更好
  18. 曾鸣:取势、明道、立理、优术
  19. STM32f4日记8之四轮三路寻迹小车实验(小车实验二:红外模块检测寻迹(左拐,右拐,前进,停止))
  20. 心通达OA 办公精灵Mac版更新

热门文章

  1. JQuery的无缝滚动
  2. QML中MouseArea元素的介绍
  3. myeclipse 没有任何问题,可偏偏还报这错。
  4. 数字图像处理形态学运算
  5. python同时兼容2和3的几个技巧
  6. Arraylist gossip
  7. linux 多源代码文件编译
  8. 计算道路超高lisp_5G+AI超高清智能视频监控将迎来增长期
  9. [云炬创业基础笔记]第二章创业者测试9
  10. 科大星云诗社动态20211102