SpringBoot学习系列之一
一、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学习系列之一相关推荐
- java flux api,SpringBoot学习系列-WebFlux REST API 全局异常处理
本文内容 为什么要全局异常处理? WebFlux REST 全局异常处理实战 小结 摘录:只有不断培养好习惯,同时不断打破坏习惯,我们的行为举止才能够自始至终都是正确的. 一.为什么要全局异常处理? ...
- 2.6 springBoot学习笔记(2.6)——- 整合mybatisPlus
更多文章 更多系列文章在个人网站 springBoot学习系列笔记文章 springBoot学习笔记(1)-- 搭建springBoot项目 文章目录 更多文章 springBoot学习系列笔记文章 ...
- SpringBoot源码学习系列之异常处理自动配置
SpringBoot源码学习系列之异常处理自动配置 1.源码学习 先给个SpringBoot中的异常例子,假如访问一个错误链接,让其返回404页面 在浏览器访问: 而在其它的客户端软件,比如postm ...
- 狂神学习系列11:SpringBoot
狂神学习系列11:SpringBoot 声明: 本文章是基于狂神的课程所编写,本人才疏学浅,内容仅作参考 项目和markdown文件资料: 07_SpringBoot: 基于狂神说SpringBoot ...
- httpwebrequest超时时间timeout设置无效_【SpringBoot WEB 系列】RestTemplate 之超时设置...
[SpringBoot WEB 系列]RestTemplate 之超时设置 一般来讲我们访问外部资源时,需要做一个保护,比如最常见的添加一个超时设置,避免一直被阻塞,RestTemplate 可以通过 ...
- 目录:SpringBoot学习目录
SpringBoot配套源码地址:gitee.com/hengboy/spr- SpringCloud配套源码地址:gitee.com/hengboy/spr- SpringBoot相关系列文章请访问 ...
- SpringCloud学习系列之七 ----- Zuul路由网关的过滤器和异常处理
前言 在上篇中介绍了SpringCloud Zuul路由网关的基本使用版本,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的路由 ...
- springboot 设置默认访问index.html_【SpringBoot WEB系列】WebFlux静态资源配置与访问
[SpringBoot WEB系列]WebFlux静态资源配置与访问 上一篇博文介绍SpringMVC的静态资源访问,那么在WebFlux中,静态资源的访问姿势是否一致呢 I. 默认配置 与Sprin ...
- springboot mybatisplus 多数据源_【SpringBoot DB 系列】MybatisPlus 多数据源配置
[SpringBoot DB 系列]Mybatis-Plus 多数据源配置 前面介绍了两种 Mybatis 的数据源配置,当然也少不了 mybatis-plus MyBatis-Plus (opens ...
最新文章
- Python培训教程:pycharm常用的快捷键合集
- D-Link云摄像头超过120款产品存在漏洞,约40万台设备受影响
- 异常记录-No module named ‘numpy.core._multiarray_umath
- python开源项目及示例代码
- 定时任务scheduleAtFixedRate设定每天某个时刻执行
- Java黑皮书课后题第5章:*5.39(金融应用:求销售总额)假设你正在某百货商店开始销售工作。你的工资包括基本工资和提成。基本工资是5000美元。你的目标是一年挣30000美元,编写程序找最小销售额
- java list 排序_Java中List的排序
- 放下偏见,原来嵌入式程序员如此“妖娆”!
- Python源码深度解析—float类型对象
- 用CSS制作细线表格
- 大一java期末考笔试_JAVA考试试题及答案
- Java音频格式转换,支持amr、aud、slk、silk转成mp3的程序
- 虚拟化服务器 戴尔,dell虚拟化服务器配置(戴尔服务器配置)
- Spring中同一个类中方法调用事务不生效,非事务方法调用事务方式事务不生效
- 算法学习之Trie树
- Python入门基础练习题
- 公司成立新单位,分公司和子公司哪个更好
- 曾鸣:取势、明道、立理、优术
- STM32f4日记8之四轮三路寻迹小车实验(小车实验二:红外模块检测寻迹(左拐,右拐,前进,停止))
- 心通达OA 办公精灵Mac版更新