Spring Boot 入门到精通(一)
创始人
2024-03-24 22:20:11

文章目录

  • 一、Spring Boot 介绍
    • 1. 概念
    • 2.maven构建Spring Boot项目
    • 3. 自定义banner
    • 4. Spring Boot的全局配置文件
    • 5. Spring Boot项目的发布方式
  • 二、Spring Boot注入方式
    • 1. @Value方式
    • 2. @ConfigurationProperties方式
    • 3. SpringBoot默认注入方式
    • 4. SpringBoot中的默认配置
  • 三、Spring Boot自动装配原理
  • 四、Spring Boot 整合Thymeleaf
    • 1.Thymeleaf介绍
    • 2. Thymeleaf 基本语法
    • 3. Thymeleaf 视图解析器优先级

一、Spring Boot 介绍

1. 概念

(1)什么是Spring Boot ?

  • Spring Boot是由Pivotal团队提供的全新框架,其中“Boot”的意思就是“引导”,意在简化开发模式,使开发者能够快速的开发出基于Spring 的应用
  • Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。

(2)Spring Boot 特点

  • 嵌入的 Tomcat,无需部署 WAR 文件
  • 简化Maven配置
  • 自动配置Spring
  • 约定大于配置
  • 依赖传递

2.maven构建Spring Boot项目

(1)创建maven工程,不要使用骨架
(2)编写pom.xml文件,继承springboot父工程

org.springframework.bootspring-boot-starter-parent2.3.4.RELEASE

(3)设置jdk版本,添加启动器

org.springframework.bootspring-boot-starter-web

(4)创建启动类

  • @SpringBootApplication: 当前类是一个引导类(此注解中使用诸多元注解修饰
  • SpringApplication.run(Application.class, args); 其返回值是一个Spring容器(ApplicationContext实现类
  • 启动类存放位置: 放置在所有代码父包同级目录下
package com.qfedu;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

(5)SpringBoot 启动器概述

  • 所谓的springBoot 启动器其实就是一些 jar包的集合,SprigBoot一共提供 44 个启动器。例如:

    • spring-boot-starter-web:支持全栈式的 web 开发,包括了 tomcat 和 springMVC 等 jar

    • spring-boot-starter-jdbc:支持 spring 以 jdbc 方式操作数据库的 jar 包的集合

    • spring-boot-starter-redis:支持 redis 键值存储的数据库操作

3. 自定义banner

  • 自定义SpringBoot项目启动时,所打印的形状
  • banner.txt 放置在resources 目录下
  • 示例:
                           _ooOoo_o8888888o88" . "88(| -_- |)O\  =  /O____/`---'\____.'  \\|     |//  `./  \\|||  :  |||//  \/  _||||| -:- |||||-  \|   | \\\  -  /// |   || \_|  ''\---/''  |   |\  .-\__  `-`  ___/-. /___`. .'  /--.--\  `. . __."" '<  `.___\_<|>_/___.'  >'"".| | :  `- \`.;`\ _ /`;.`/ - ` : | |\  \ `-.   \_ __\ /__ _/   .-` /  /======`-.____`-.___\_____/___.-`____.-'======`=---='^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^// 佛祖保佑 永不宕机 永无BUG //

在这里插入图片描述

4. Spring Boot的全局配置文件

(1)配置文件命名

  • SpringBoot项目使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到resources下
  • 源码:
    在这里插入图片描述

(2)yml配置文件

  • yml是 Spring Boot 中新增的一种配置文件格式。
  • 特点:具备天然的树状结构
  • yml与 properties的区别
    • 配置文件的扩展名有变化
    • 配置文件中的语法有变化:
      • 在 yml 中使用“ ”进行分割
      • 在 yml中缩进时不允许使用tab键,缩进的空格数不重要,只要是左对齐的一列数据,都是同一个层级
      • 每个K的冒号后面一定要加一个空格

(3)配置文件示例:

server:port: 8090	#端口号servlet:context-path: /springboot	#项目名spring:datasource:	#数据库连接driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/spring?characterEncoding=utf-8&useSSL=false&serverTimezone=UTCusername: rootpassword: 123456#配置mybatis
mybatis:type-aliases-package: com.qfedu.pojomapper-locations: classpath:mapper/*Mapper.xml#配置日志
logging:level:com.qfedu.aop: debug

5. Spring Boot项目的发布方式

  • 通过jar包发布

(1)在pom中添加一个SpringBoot的构建的插件

org.springframework.bootspring-boot-maven-plugin

(2)在maven面板视图中,选择“package”,在target中会产生xxx.jar包
在这里插入图片描述

(3)然后在cmd终端发布项目(jar包所在目录)

  • java -jar xxx.jar
    在这里插入图片描述

二、Spring Boot注入方式

  • 如何将将配置文件相关信息注入到数据源?????

  • 全局配置文件:application.properties,写入数据库信息
    在这里插入图片描述

1. @Value方式

SpringBoot配置主要靠java类和一些注解来达到和xml配置一样的效果,比较常用的注解有:

  • @Configuration:声明一个类作为配置类,代替xml文件

  • @Bean:声明在方法上,将方法的返回值加入Bean容器,代替标签

  • 使用全局配置文件:application.properties,不用显式引用配置文件(不需要使用注解@PropertySource),便可以直接使用全局配置文件信息

  • 配置数据源

@Configuration
public class JdbcConfiguration {@Value("${jdbc.url}")String url;@Value("${jdbc.driverClassName}")String driverClassName;@Value("${jdbc.username}")String username;@Value("${jdbc.password}")String password;@Beanpublic DruidDataSource dataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setUrl(url);dataSource.setDriverClassName(driverClassName);dataSource.setUsername(username);dataSource.setPassword(password);return dataSource;}
}

2. @ConfigurationProperties方式

  • 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到属性中(从全局配置文件中读取:application.properties)
  • 创建属性读取类
    在这里插入图片描述

(1)配置数据源 —— @Autowired注入

@Configuration
public class JdbcConfiguration {@Autowiredprivate DbProperties dbProperties;@Beanpublic DruidDataSource dataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setUrl(dbProperties.getUrl());dataSource.setDriverClassName(dbProperties.getDriverClassName());dataSource.setUsername(dbProperties.getUsername());dataSource.setPassword(dbProperties.getPassword());return dataSource;}
}

(2)配置数据源 —— @Bean方法的参数注入

@Configuration
public class JdbcConfiguration {@Bean//会去Spring容器中找到一个同类型的bean,注入到参数中public DruidDataSource dataSource(DbProperties dbProperties) {DruidDataSource dataSource = new DruidDataSource();dataSource.setUrl(dbProperties.getUrl());dataSource.setDriverClassName(dbProperties.getDriverClassName());dataSource.setUsername(dbProperties.getUsername());dataSource.setPassword(dbProperties.getPassword());return dataSource;}
}

3. SpringBoot默认注入方式

  • 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource属性中
@Configuration
public class JdbcConfiguration {@Bean// 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中@ConfigurationProperties(prefix = "jdbc")public DataSource dataSource() {DruidDataSource dataSource = new DruidDataSource();return dataSource;}
}

4. SpringBoot中的默认配置

  • 我们的项目中,已经引入了一个依赖:spring-boot-autoconfigure,其中定义了大量自动配置类:
    在这里插入图片描述
    非常多,几乎涵盖了现在主流的开源框架,例如:
    • redis
    • jms
    • amqp
    • jdbc
    • jackson
    • mongodb
    • jpa
    • solr
    • elasticsearch
      … 等等

三、Spring Boot自动装配原理

  • Springboot的自动装配实际上是通过 @EnableAutoConfiguration注解实现的,它用于修饰@SptingBootApplication注解
  • 在@EnableAutoConfiguration中,通过@Import注解引入AutoConfigurationImportSelector类,在AutoConfigurationImportSelector类中提供了一个方法selectImports,通过此方法实现按需加载
  • selectImports方法中,会根据引入的启动器,去加载/META-INF/目录下spring.factories文件中的部分配置类
  • 在spring.factories文件中含有诸多的xxxAutoConfiguration配置类,在此配置类中会含有@ConditionalOnxxx注解,SpringBoot通过此注解实现按需加载,自动装配所需要的Bean

四、Spring Boot 整合Thymeleaf

1.Thymeleaf介绍

(1)什么是Thymeleaf

  • Thymeleaf 是一个跟 Velocity、FreeMarker 类似的用Java语言编写的模板引擎,它基于模板数据生成输出文本(HTML网页、WORD、XML,PDF或Java等)。
    在这里插入图片描述

(2)为什么要使用Thymeleaf

  • jsp访问实现页面展示,需要一系列编译,苏剧极慢
  • 一般情况下只用于单体项目或后端数据测试
    在这里插入图片描述

(3)thymeleaf的启动器

org.springframework.bootspring-boot-starter-thymeleaf

(4)thymeleaf默认配置文件

  • 导入相关启动器后,可以直接查询 XXXAutoConfiguration ,其中必定含有XXXProperties类,其里面含有相关默认配置

hymeleaf也会根据前缀和后缀来确定模板文件的位置:

在这里插入图片描述

  • 默认前缀:classpath:/templates/
  • 默认后缀:.html

Thymelaef特点:

  • 语法:通过他特定标签操作html属性

  • 目录位置:src/main/resources/templates

  • 后缀名:.html

  • 注意,把html 的名称空间,改成:xmlns:th="http://www.thymeleaf.org" 会有语法提示

2. Thymeleaf 基本语法

(1)变量输出

  • th:text 在页面中输出值


  • th:value 可以将一个值放入到input标签的value中

(2)日期和字符串处理

  • Thymeleaf 内置对象

  • 注意语法:

    • 调用内置对象一定要用#

    • 大部分的内置对象都以 s 结尾 strings、numbers、dates

    • ${}表达式一定是在""中生效的

日期处理:

  • ${#dates.format(birth,‘yyyy-MM-dd’) 按照自定义的格式做日期转换(日期回选)

字符串处理:


(3)条件判断

  • th:if :判断条件是否满足
性别:男

(4)单选框按钮选中判断

  • th:checked :其内取值为boolean型,true则选中,false则补选中
性别:

(5)迭代遍历

  • th:each :实现集合遍历
    

(5)URL表达式

  • url表达式语法: 基本语法:@{}
    • / :相当于当前项目的跟
      在这里插入图片描述
    • ~/ :相当于服务器的跟在这里插入图片描述
  • 在 url中实现参数传递
    • 问号形式传参
      在这里插入图片描述
    • restful风格传参
      在这里插入图片描述
    • 域中参数回传(restful 风格)
      在这里插入图片描述

3. Thymeleaf 视图解析器优先级

(1)ThymeleafViewResolver视图解析器

  • Thymeleaf 启动器默认含有一个视图解析器 —— ThymeleafViewResolver
  • 当我们不使用 Thymeleaf 启动器时,SpringBoot 默认使用的视图解析器(ViewResolver)是 —— SpringMVC的视图解析器
  • 当引入Thymeleaf 启动器之后,ThymeleafViewResolver的优先级会高于SpringMVC的视图解析器(查看ThymeleafAutoConfiguration源码可知)
    在这里插入图片描述

(2)Spring Boot 使用的视图解析器

  • 若引用Thymeleaf 启动器后,默认会使用Thymeleaf的视图解析器,返回的视图、ModelAndView、Model等均使用templates文件夹 下的资源不会访问Spring Boot的静态资源
  • 若不引用Thymeleaf 启动器,则默认使用SpringMVC的视图解析器,但其默认的后缀不是.html结尾
  • 体现:
    • SpringMVC的视图解析器后缀不是 —— .html,默认templates文件夹中的页面后缀是.html,且名称相同时,templates文件夹中的页面优先级高(引用Thymeleaf 启动器后)

    • 只要存在Thymeleaf相关依赖,若是视图名称和templates文件夹中的页面名称相同,返回扫描templates文件夹中的页面就会优于静态资源下的视图页面(就算在配置文件中指定返回的后缀(spring.mvc.view.suffix=),SpringMVC视图解析器也不会生效)

    • 若存在Thymeleaf相关依赖,想要实现页面跳转(跳转到静态资源包下),可以直接return /页面.html

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...