SpringBoot知识点

SpringBoot知识点

1.回顾Spring

优点

开源的,轻量级的(Spring的组件代码),非侵入时的一站式框架,简化企业级应用开发。

控制反转(IOC),依赖注入(DI)降低了组件之间的耦合性,实现了软件各层之间的解耦。

面向切面(AOP),利用它可以很容易实现一些拦截,如事务控制等。可以把一些独立的功能抽取到一个切面中去,在不改变原来代码的基础上对我们的代码进行功能上的增强。

​ Spring对于主流的应用框架提供了很好的支持,例如mybatis

​ Spring提供自己的MVC实现。

缺点

 配置是重量级的(配置很麻烦,“废话”很多,例如配置开启事务(事务在现在的项目中是必要的)、开启注解等 。虽然Spring引入了注解功能,但是仍然需要编写大量的模板化配置文件。

​ 项目的依赖管理比较麻烦(jar包相关吗,需要的jar包如:数据库,gson,日志,spring相关,阿里数据源,mybatis,文件上传组件),需要分析要导入大量库的坐标,而且还需要分析导入与之有关依赖,一旦选择错依赖版本,随之人来的不兼容问题就会严重阻碍项目的开发进度。

​ Spring Boot对上述Spring的缺点进行改善和优化,基于约定由于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。

2.Spring Boot概述

Spring Boot是由Pivotal团队提供的在Spring框架基础上开发的框架,其设计<u>目的是用来简化应用的初始搭建以及开发过程。</u>

​ Spring Boot本身幷不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。

 Spring Boot以**约定大于配置**的核心思想,从而使开发人员不再需要定义样板化的配置。它集成了大量常用的第三方库配置(如Redis(非关系型数据库,做缓存用 ),MongoDB,Jpa RabbitMQ(消息队列),Quartz(定时组件)等等), Spring Boot应用中这些第三方库几乎可以零配置的开箱即用,通过这种方式, Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。

​ spring官网:spring.io

​ Spring Boot你只需要“run"就可以非常轻易的构建独立的、生产级别(公司里面商业级别的)的Spring应用。大部分Spring Boot应用只需要很少的配置。(必须要配的:数据库连接、扫描Mapper.xml所在的包)

Spring Boot特点(官网)

​ 创建独立的spring应用程序

​ 直接内嵌tomcat、jetty和undetow

​ 提供了固定化的“starter”配置,以简化构建配置

​ 尽可能的自动配置,如:安全指标、运行状况监测和外部化配置等

​ 绝对不会生成代码,并且不需要XML配置

Spring Boot的核心功能

起步依赖

​ 起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。

自动配置

​ Spring Boot的自动配置士一个运行时(更准确的说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。

3.Spring Boot开发环境的搭建

方式1.在官网上搭建

搭建网址:http://start.Spring.io/ 选择配置选项,在线生成并下载

在这里插入图片描述

方式2:idea自动生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第四步,选择依赖组件,如Web--->springWeb,SQL --->JDBC API,Mybatis Framework,MySQL Driver等。

​ 补充:在线生成启动 logo网址:https://www.bootschool.net/ascii ,下载存放在 resources 目录下即可。

spring Boot 配置文件

Spring Boot使用一个全局的配置文件(配置名是固定的)

application.properties 属性文件格式内容为键值对

​ server.port=8080

application.yml

​ yml是YAML(YAML Ain’ t Markup Language)语言的文件,以数据为中心。

yml配置示例

​ server:

​ port:8080

yaml 基本语法:

	语法结构:key:空格 value

​ 以此来表示一对键值对(空格不能省略);以空格的缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。

spring Boot 自动配置

spring实现自动装配的核心仍然是使用注解标签。

@SpringBootApplication是springboot的核心注解,其中包含@SpringBootConfiguration,@EnableAutoConfiguration,@ComponmentScan

@ComponmentScan :对启动类所在类的包中的类扫描,它默认扫描的是与该类同级的类或者同级包下的所有类。

@SpringBootConfiguration:通过源码得知它是一个@Configuration,相当于之前的配置文件功能。扫描带有@Configuration注解标签的类(等同于之前的xml文件)

@EnableAutoConfiguration:自动装配的注解标签 最重要的,根据我们的配置,去加载一些第三方组件.是这里最重要的注解,它实现了对Spring Boot应用自动装配的功能。它的配置数据在 META-INF/spring.factories 中,我们打开 spring-boot-autoconfigure jar 中 的该文件,发现对应着许多个 XXXAutoConfiguration 配置类。

@Import({AutoConfigurationImportSelector.class})  加载选择器在 spring-boot-autoconfigure-2.4.7.jar /META-INF /spring.factories 文件中,结合pom.xml文件中所添加的依赖进行自动装配

@Configuration :加入@Configuration注解,表明这就是一个配置类。有一个 myBean()的方法 ,并用@Bean 进行注释,返回一个 MyBean()的实例,表明这个方法是需要被 Spring 进行管理的 bean。@Bean 如果不指定名称的话,默认使用 myBean 名称,也就是小写的名称。

@Bean:相当于 XML 中的,放在方法的上面,而不是类,意思是产生一 个 bean,并交给 spring 管理。

4.Spring Boot 集成JDBC(主要 事务管理)

数据源配置:在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一个几种不同的数据库配置方式。

​ 首先,为了连接数据库需要引入jdbc支持,在pom.xml中引入如下配置:

<dependency> 
	<groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>

​ 在application.yml中配置数据源信息

#spring配置
spring:
#数据库连接配置
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/ssm_db?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

​ 使用JdbcTemplate操作数据库

​ Spring的JdbcTemplate是自动配置的,你可以直接使用@Autowired来注入到你自己的bean中来使用。

Spring Boot 整合阿里数据源(数据连接池的支撑)

导入阿里数据源jar

<dependency> 
	<groupId>com.alibaba</groupId> 
	<artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>

在 yml 文件中注册阿里数据库连接池

#spring配置
spring:
#数据库连接配置
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/ssm_db?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    filters: stat
    initialSize: 5 #初始化时建立物理连接的个数
    maxActive: 20 #最大连接池数量

5.Spring Boot 集成 mybatis

<dependency>
	<groupId>org.mybatis.spring.boot</groupId> 
	<artifactId>mybatis-spring-boot-starter</artifactId> 
	<version>2.1.4</version>
</dependency>

在 application.yml 中配置数据源信息

mybatis:
  type-aliases-package: com.ff.back.bean
  mapper-locations: classpath:mapper/*Mapper.xml
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: true

推荐一款插件:MyBatisX。

最后,在SpringBoot中的启动类上配置@MapperScan(“com.ff.back.mapper”),去扫描放接口的包,然后在接口层配置@Repository。

补充:配置日志打印
logging:
  level:
    com.ff.back.mapper: trace #持久层的日志打印 trace 日志级别
  file:
    name: D:\\logs\\log.log

6.SpringBoot后端各层需要配置的注解

启动类:

@SpringBootApplication
@MapperScan("com.ff.back.mapper")

bean层/pojo层:

@Component
@TableName(value = "user")

config层:

@Configuration

controller层:

@RestController
@RequestMapping(path = "/api/login")

dao层/mapper层(持久层):

@Repository

service层:

@Transactional
@Service

学习尚硅谷视频整理的文档 Spring Boot 1 1 Spring Boot入门 4 1.1 简介 4 1.2 微服务(martin fowler发表了一篇文章) 5 1.3 环境约束 7 1.4 第一个Spring Boot项目(jar):HelloWorld 8 1.5 入门案例详解 11 1.5.1 POM文件 11 1.5.2 主程序类,主入口类 12 1.6 使用Spring Initializer向导快速创建Spring Boot 16 2 Spring Boot配置 18 2.1 配置文件 18 2.2 YML语法 19 2.3 YML配置文件值获取 21 2.4 properties配置文件乱码问题 24 2.5 @ConfigurationProperties与@Value的区别 25 2.6 配置@PropertySource、@ImportResource、@Bean 27 2.7 配置文件占位符 30 2.8 Profile多环境支持 31 2.9 配置文件的加载位置 33 2.10 外部配置加载顺序 36 2.11 自动配置原理 37 2.12 @Conditional派生注解 41 3 Spring Boot与日志 42 3.1 日志框架分类和选择 42 3.2 SLF4j使用 43 3.3 其他日志框架统一转换成slf4j+logback 44 3.4 Spring Boot日志使用 45 3.5 Spring Boot默认配置 47 3.6 指定日志文件和日志Profile功能 52 3.7 切换日志框架(不使用SLF4j+LogBack) 54 4 Spring Boot与Web开发 55 4.1 Web开发简介 55 4.2 静态资源映射规则 56 4.3 引入Thymeleaf 60 4.4 Thymeleaf语法 61 4.5 SpringMVC自动配置原理 67 4.6 SpringBoot扩展与全面接管 70 4.7 如何修改SpringBoot的默认配置 72 4.8 【实验】CRUD操作 73 4.8.1 默认访问首页 73 4.8.2 登录页面国际化 74 4.8.3 登录 80 4.8.4 拦截器进行登录检查 81 4.8.5 实验要求(没按要求做,不想改了!) 82 4.8.6 CRUD-员工列表 83 4.8.7 CRUD-员工修改 86 4.8.8 CRUD-员工添加 87 4.8.9 CRUD-员工删除 88 4.9 错误处理原理&错误页面定制 90 4.10 配置嵌入式Servlet容器(springboot 1.50版本) 97 4.10.1 如何定制和修改Servelt容器的相关配置 97 4.10.2 注册servlet三大组件【servlet,filter,listener】 98 4.10.3 替换为其他嵌入式容器 102 4.10.4 嵌入式servlet容器自动配置原理 103 4.10.5 嵌入式servlet容器启动原理 103 4.11 使用外置的Servlet容器 104 4.11.1 步骤 104 4.11.2 原理 107 5 Spring Boot与Docker(虚拟化容器技术) 110 5.1 简介 110 5.2 核心概念 111 5.3 安装Docker 112 5.4 Docker常用命令&操作 113 5.5 安装MySQL示例 114 6 Spring Boot与数据访问 115 6.1 JDBC 115 6.1.1 实现 115 6.1.2 自动配置原理 116 6.2 整合Durid数据源 117 6.3 整合Mybatis 122 6.3.1 注解版 123 6.3.2 配置文件版 124 6.4 整合SpringData JPA 125 6.4.1 SpringData简介 125 6.4.2 整合 126 7 Spring Boot启动配置原理 128 7.1 启动流程(Springboot 1.50版本) 128 7.1.1 创建SpringApplication对象 129 7.1.2 运行run方法 130 7.1.3 编写事件监听机制 132 8 Spring Boot自定义starters 136 8.1 概述 136 8.2 步骤 137 9 更多Springboot整合示例 144 10 Spring Boot与缓存 145 10.1 JSR107缓存规范 145 10.2 Spring的缓存抽象 146 10.2.1 基本概念 146 10.2.2 整合项目 146 10.2.3 CacheEnable注解 148 10.2.4 Cache注解 150 10.3 整合redis 154 10.3.1 在Docker上安装redis 154 10.3.2 Redis的Template 154 10.3.3 整合(百度) 155
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白居不易.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值