SpringBoot基础
1、概念
1.1、简单介绍
Spring官网:点击查看
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。
2013年,Pivotal团队开始研发SpringBoot。
2014年4月,发布全新开源的轻量级框架的第一个SpringBoot版本。
原博文:点击查看
1.2、特点:
为什么要学习SpringBoot?
SpringBoot是为了简化Spring应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配 的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程。
末接触SpringBoot之前,搭建一个普通的WEB工程往往需要花费30分钟左右,如果遇到点奇葩的问题,耽搁的时间会更长一点,但自从用了SpringBoot后,真正体会到什么叫分分钟搭建一个WEB项目。
在传统的一些框架中 (SSH、SSM、Servlet/JSP)虽然功能很强大但是配置起来太麻烦了,相比python或者php,Java就略显臃肿,主要问题有两点:
1、复杂的配置文件:
项目之间各种配置文件铺天盖地,在开发的过程中占用了大量的时间,并且需要对这些配置文件进行维护,所以整个项目感觉特别复杂,并且Java代码和配置文件之间的切换开发,给程序开发人员带来很大的负担。
2、各种依赖比较混乱:
主要问题就是版本冲突,不同技术的版本需要我们知道哪些版本存在冲突问题,一旦使用错误,就需要重新再去下载依赖库进行依赖配置。
而Spring Boot简化了基于Spring的应用开发,只需要一个run”就创建了一个独立的、生产级别的Spring应用,Spring Boot为Spring平台及第三方提供了开箱即用的设置(默认设置的包就是启动器starter),这样我们就可以简单的开始使用了。Spring Boot主张 用最少的配置做更多的事,如果我们创建一个Java应用,并使用java-jar启动,就能得到一个生产级别的web工程。
特点:
- 创建独立的 Spring应用程序
- 直接内嵌Tomcat、Jetty或Undertow (无需部署WAR文件)
- 提供自以为是的“入门”依赖项以简化我们的构建配置
- 尽可能自动配置 Spring 和 3rd方库
- 提供生产就绪功能,例如指标、运行状况检查和外部化配置
- 完全不需要代码生成,也不需要 XML 配置
SpringBoot=Spring+SpringMVC
2、构建SpringBoot项目
2.1、通过spring官网构建
Spring构建项目官网:点击查看
2.2、通过idea构建
2.2.1、创建项目
2.2.2、选择依赖
2.2.3、启动项目
点击启动项目
查看项目启动日志
2.2.4、前后台交互
简单体验下
后端部分:
前端页面:
简单前后端交互完成!!!
2.2.5、springboot项目的目录结构
项目目录结构
启动类:它里面有一个main方法,通过调用SpringApplication类的run方法来运行项目
resource -> static:存放静态资源(css,js,image等)
配置文件:主要的配置文件,SpringBoot项目启动时候,会自动加载配置文件。文件类型可以是:application.yml / application.yaml / application.properties
pom.xml:此文件是maven构建的基础,里面包含项目基本信息、依赖配置、插件配置等。
pom.xml:
2.2.6、自定义banner
SpringBoot启动的时候,我们可以看到如下内容,这一块其实是可以自定义的,而且在 2.X 版本中,它支持的格式从文本扩展到banner.txt、banner.jpg、banner.gif、 banner.jpeg等等,只需要在**resouces****目录下添加指定命名的文件即可。
定义banner文件
重新运行项目
2.2.7、查看SpringBoot默认提供的Bean
2.2.8、手动注入Bean
运行查看是否注入,在控制层也可以用 @Value 注解获取
2.2.9、简单了解配置文件
从启动日志中可以发现,SpringBoot默认的端口是 8080,那么如果端口被占用了怎么办呢? 不要慌,问题不大,可以去杀掉占用8080端口的进程,也可以修改端口号
2.2.10、关于starter
starter 翻译意思是:参赛人、发令员
SpringBoot中的starter是一种非常重要的机制(自动化配置),能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入
starter依赖SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息的困扰。
SpringBoot会自动通过classpath路径下的类发现需要的Bean,并注册进IOC容器。SpringBoot提供了针对日常企业应用研发各种场景的
spring-boot-starter依赖模块。所有这些依赖模块都遵循着约定成俗的默认配置,并允许我们调整这些配置,即遵循“约定大于配置”的理念。
例如:
spring-boot-starter-web
spring-boot-starter-parent 这是SpringBoot的父级依赖,这样当前的项目就是SpringBoot项目了。spring-boot-starter-parent 是个特殊的 starter。
功能1:默认依赖配置(绝对兼容)
它用来提供相关的 Maven 默认依赖。使用它之后,常用的包依赖可以省去 version 标签,当我们搭建web应用的时候,可以像下面这样添加spring-boot-starter-web依赖:
但是这种默认允许不填写版本号的依赖也必须是boot中默认给定的,如果没有默认给定,还是需要手动填写的。
功能2:默认环境配置 (绝对兼容)
默认使用 Java8,可以添加以下配置修改版本。
默认使用UTF-8编码,可添加以下配置修改编码等。
功能3:资源过滤
识别默认配置文件
过滤打包内容(打包的时候把 src/main/resources 下所有文件都打包到jar包中)
3、YAML / YML配置文件
在我们翻阅stater的过程中,也应该发现配置文件除了可是使用application*,properties类型,还可以使用后缀为.yml或.yaml类型,这种类型相比properties类型支持了集合对象等数据,但是前提也必须是application*才能被Spring扫描到。
YAML是“YAML Ain't a Markup Language” (YAML不是一种标记语言)的递归缩写。在开发的这种语言时,
YAML的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据
做为中心,而不是以标记语言为重点,而用反向缩略语重命名。
配置环境基础信息,创建application.yaml
3.1、语法规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- 可以使用“-小写字母”或小写字母来代替“大写字母”,如 userName 与 user-name,user name 含义是一样的
- key: value 格式书写 key 后面跟着冒号,再后面跟着一个空格,然后是值
- 注释使用 #
3.2、数据类型
YAML支持的数据结构有三种:
- 普通的值(数字,字符串,布尔)
- 对象(属性和值)、Map(键值对)
- 数组(List、Set)
测试代码:
# 基本数据类型
catname: 小橘猫
catage: 5
ischengnian: true
# 对象
cat:
name: 加菲猫
age: 6
# 数组
dog:
- 京巴
- 哈士奇
- 藏獒
- 泰迪
# 组合 对象里面包含数组
animal:
bear:
- 黑熊
- 棕熊
- 北极熊
pig:
- 黑猪
- 白猪
# 组合 数组里面包含对象
car:
- car1: 兰博基尼
- car2: 宝马
car2:
- {
carname1: 一汽大众, price: 20w }
- {
carname2: 宝马a6, price: 40w }
在控制层读取配置文件信息
package edu.xja.springbootfirst.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Controller;
import org.springframework.