Spring Boot 入门详细分析
推荐阅读:
我们为什么要学习 Spring Boot
我们搭建 Spring Boot 项目,可以使用 Spring 为我们提供的初始化网站,那个可能不太方便,今天呢,我们就来说说如何使用 IDEA 来初始化我们的 Spring Boot 项目并分析一下这个 demo 。
这里说一句,能够初始化 Spring Boot 的 IDEA 是有版本要求的,最低版本是 14.1。
下面就是操作的步骤,全是图片,请各位做好警戒。
1、选择 File - New - Project - Spring Initializr
2、 可以修改一下包名、打包方式、Java 版本等信息。
3、选择 Web,其它的现在还不了解。
4、 配置一下项目路径
finish 之后就会看到新建的项目有 pom.xml 文件,main 入口还有一个空的 application.properties 文件。待会我们一个一个的说,先把项目跑起来再说。
在跑起来之前,我们添加一个类用来测试看效果。如下所示,添加一个 Example 文件。
好了,现在就说说如何启动项目,第一种方式,使用 Maven 命令打包,然后执行 jar 包。
打好的 Jar 包在 target 中,在 Terminal 中进入目录使用 java -jar 命令执行即可。当然,你也可以在 DOS 中执行这个 Jar 包。
第二种方式,使用插件命令直接执行。我们也可以直接在 Terminal 中输入 mvn spring boot:run 一样的效果(可以在 pom.xml 中看到引用的插件)。
第三种方式,右击 run 即可。
好了,上面说了这么多,每一种方式都是可行的,访问 localhost:8080 即可看到 Hello World!
OK ,下面就分析一波组成 demo 的各个部分。
pom.xml 文件
我们之前就说过 Spring Boot 的一个优点就是依赖管理变的简单,具体看看都提供了什么。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
首先 pom 文件中提供了父级依赖的概念,这个依赖是 Spring Boot 项目的标识,spring-boot-starter-parent 是一个特殊的 starter,它用来提供 Maven 默认依赖,而且有了它,我们也不需要为不同的依赖添加版本信息。
当然我们可以重写某个依赖的版本,但是不建议这样做,可能就会和其它 jar 包不兼容了。假如在自己公司维护的有一套依赖关系,我们也可以不用父级依赖,也可以只使用其中的一部分依赖,借助于关键字 import 实现。但是,实际中应该是默认的居多。
pom 中还给我们定义了很多的 “starter” 每一个 starter 就像一个包一样,这其中包含的是一个模块的依赖,举例看看 spring-boot-starter-web 这个起步依赖内部就依赖了其它的依赖,这样我们 pom 文件就省心简洁多了。
另外 pom 文件中还包含插件,这里 pom 文件中只能看到一个 maven 插件,其实还有一些插件已经放在父级依赖中了。
启动类,Demo2Application.java ,这里是程序的入口,我们刚刚也可以执行这个类,但是执行之后就结束了,因为这里面没有映射的路径信息,我们也可以把 Example 中的方法放在这个启动类中并添加相应的注解,也是可行的。
最后,这个 demo 中还涉及到几个注解,挨个说一下。
@SpringBootApplication 作用有三点
1、启动 Spring Boot 的自动配置机制,作用等同于 @EnableAutoConfiguration 。
2、扫描包及其子包下的组件,作用等同于 @ComponentScan 。
3、允许在上下文中注册额外的 Bean 或导入额外的配置类,等同于 @Configuration 。
所以,@SpringBootApplication 以一抵三,非常重要的,最后,还涉及到一个注解 @RestController,这个就是 @Controller 和 @ResponseBody 的合体。
OK,到此我们的 Spring Boot 入门 demo 就算讲解完毕。是不是感觉注解老多,其实 Spring Boot 新创的注解不算多,好多都是从 Spring MVC 那里拿过来的,不要怂,就是干!
Spring Boot 入门详细分析的更多相关文章
- 黑马_13 Spring Boot:01.spring boot 介绍&&02.spring boot 入门
13 Spring Boot: 01.spring boot 介绍&&02.spring boot 入门 04.spring boot 配置文件 SpringBoot基础 1.1 原有 ...
- Spring Boot 入门(五):集成 AOP 进行日志管理
本篇文章是接着 Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理写的,按照前面几篇博客的教程,可以搭建一个简单的项目,主要包含了 Pagehelper+MyBatis 分页 ...
- Springboot 系列(一)Spring Boot 入门篇
注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 由于 J2EE 的开发变得笨重,繁多的配置, ...
- spring boot入门教程——Spring Boot快速入门指南
Spring Boot已成为当今最流行的微服务开发框架,本文是如何使用Spring Boot快速开始Web微服务开发的指南,我们将使创建一个可运行的包含内嵌Web容器(默认使用的是Tomcat)的可运 ...
- Spring Boot入门系列(十三)如何实现事务
前面介绍了Spring Boot 中的整合Mybatis并实现增删改查.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhong/category/1 ...
- Spring Boot 入门(十三):集成Hasor的Dataway模块,干掉后台,自动配置接口
终于出湖北了,封闭2个月,家里没电脑,感觉好久没自主撸代码啊啊啊啊啊啊啊啊啊啊啊啊啊. 连接上篇文章Spring Boot 入门(十二):报表导出,对比poi.jxl和esayExcel的效率,继续从 ...
- Spring Boot入门系列(十六)使用pagehelper实现分页功能
之前讲了Springboot整合Mybatis,然后介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.接下来要说一说Mybatis 的分页 ...
- Spring Boot入门系列(十七)整合Mybatis,创建自定义mapper 实现多表关联查询!
之前讲了Springboot整合Mybatis,介绍了如何自动生成pojo实体类.mapper类和对应的mapper.xml 文件,并实现最基本的增删改查功能.mybatis 插件自动生成的mappe ...
- Spring Boot入门学习
1. Spring Boot概述 1.1.什么是Spring Boot SpringBoot是一个可使用Java构建微服务的微框架.是Spring框架及其社区对"约定优先于配置"理 ...
随机推荐
- 课程4:黑马程序员_spring2.5视频教程--视频列表
\黑马程序员_spring2.5视频教程\01Struts相关基础理论介绍.mp4; \黑马程序员_spring2.5视频教程\02搭建struts开发环境.mp4; \黑马程序员_spring2.5 ...
- 操作系统笔记(六)页面置换算法 FIFO法 LRU最近最久未使用法 CLOCK法 二次机会法
前篇在此: 操作系统笔记(五) 虚拟内存,覆盖和交换技术 操作系统 笔记(三)计算机体系结构,地址空间.连续内存分配(四)非连续内存分配:分段,分页 内容不多,就不做index了. 功能:当缺页中断发 ...
- springboot学习笔记-6 springboot整合RabbitMQ
一 RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿 ...
- cmake介绍
1. cmake介绍 1.1 cmake用途 CMake的用途是能通过一系列的源码和相关的配置来生成需要的编译器平台上的项目文件.譬如,如果一个项目需要在Windows上用VS编译,在Linux上用m ...
- volatile的深入理解--【sky原创】
volatile 所有定义的变量都是在内存上面的, 例如: int i = 10; int j = i; int k = i; i = 10; 是初始化的变量,存放在数据段,未初始化的变量存放在 ...
- 使用 GDebi 默认代替 Ubuntu 软件中心
GDebi,一个安装 Debian 可执行文件的专用程序.它极其轻量,且专注于安装 .deb 文件,可以自动解决依赖问题,比原生的好用.GDebi 最有用的功能是它也可以为你展示出将要安装的程序的依赖 ...
- 超图(Hypergraph)
原文地址:http://blog.csdn.net/qrlhl/article/details/48413117 超图(Hypergraph)是什么 简单的来说,对于我们熟悉的图而言,它的一个边(ed ...
- oracle 命令行
背景 看到当初竟然记录了命令行,想想自己用了多久才知道了命令行,好像有几年了吧.当时还记得买了两本oracle9的管理书籍,就跟见了九阴真经一样,从头到尾熟悉了好几遍,不过也大部分忘了交给老师了.以下 ...
- Clipboard深度实践与采坑记录
1.css禁止选择导致IOS无法复制 body{ -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: ...
- lodash篇之对象深度比较_.isEqual