初探SpringBoot
前言
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
初识 Springboot
什么是Spring Boot
1.Spring Boot 是简化 Spring 应用开发的一个框架
2.Spring Boot 主要提供了以下的功能:
(1)、创建独立的Spring应用程序
(2)、嵌入的Tomcat,无需部署WAR文件
(3)、简化Maven配置
(4)、自动配置Spring
(5)、提供生产就绪型功能,如外部配置
快速创建一个Spring Boot 项目
(1)、Idea里面,点击 File --> new --> project --> Sping Initializr,选择 jdk 版本,然后点击 next
(2)、填写坐标
(3)、选择 web, Spring web, 选择springboot的版本,然后点击next
(4)、填写项目名以及项目路径
这样我们就创建了一个SpringBoot项目。
配置文件
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
application.properties
application.yml
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
YAML语法
基本语法:
k:(空格)v:表示一对键值对;注意:冒号后面必须要有空格
以空格的缩进来控制层级关系;注意:只要是左对齐的一列数据,都是同一个层级的
SpringBoot 中引入模板引擎 Thymeleaf
Thymeleaf 介绍
什么是 Thymeleaf
Thymeleaf 是 Web 和独立环境的现代服务器端 Java 模板引擎,能够处理HTML,XML,JavaScript,CSS 甚至纯文本。
动态页面需要先请求服务器,访问后台应用程序,然后再转向到页面,比如访问JSP。spring boot建议不要使用JSP,默认使用Thymeleaf模板引擎来做动态页面。
Thymeleaf 的优点
1、开箱即用。它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果。并且开发人员也可以扩展和创建自定义的方言;
2、Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。
3、便捷性:可以让前端开发人员在浏览器中直接打开查看样式,也可以让后端开发人员根据真实数据查看显示的效果。同时,SpringBoot 提供了 Thymeleaf 自动化配置解决方案。
Spring Boot 整合 Thymeleaf
引入thymeleaf
引入thymeleaf组件后, 动态跳转找的是 templates目录下的文件, 如果存在相同的文件, 优先访问的是templates下的文件
编写controller
编写 index.html
所有的配置完成后,启动项目
**访问 http://localhost:8080/index
深入剖析Springboot
入口类及其源码剖析
首先从注解入手,进行分析:
@SpringBootApplication 注解:
@SpringBootApplication 注解——标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用
@SpringBootConfiguration 注解:
@SpringBootConfiguration 注解——Spring Boot的配置类;标注在某个类上,表示一个类提供了Spring Boot应用程序
@Configuration注解:
@Configuration注解——配置类上来标注这个注解
@EnableAutoConfiguration 注解:
@EnableAutoConfiguration 注解–告诉SpringBoot开启自动配置功能,这样自动配置才能生效借助@import,扫描并实例化满足条件的自动配置的bean,然后加载到IOC容器中
@AutoConfigurationPackage注解:
@AutoConfigurationPackage注解——自动配置包@Import(EnableAutoConfigurationImportSelector.class):给容器中导入组件
@ComponentScan注解:
@ComponentScan注解——自动扫描并加载符合条件的组件(比如@Component和@Repository等)或者bean定义,最终将这些bean定义加载到IOC容器中去 。
实例化SpringApplication对象的源码剖析:
设置初始化器(Initializer):
initializers 是 SpringApplication 中的一个实例属性
initailizer实现了ApplicationContextInitializer接口
总结:
1、ApplicationContextInitializer接口的作用,在Spring上下文被刷新之前进行初始化的操作。典型地比如在Web应用中,注册Property Sources或者是激活Profiles。Property Sources比较好理解,就是配置文件。Profiles是Spring为了在不同环境下(如DEV,TEST,PRODUCTION等),加载不同的配置项而抽象出来的一个实体。
2、调用initialize()方法,把初始化的ApplicationContextInitializer实现加载到SpringApplication中
设置监听器:
继承了ApplicationListener()接口——在这里使用到了观察者模式,有一个被观察者和许多观察者,当被观察者的状态发生改变时,要通知所有的观察者做一些操作。