SpringBoot部分笔记整理

这篇博客详细介绍了SpringBoot的各个方面,包括创建工程、基本配置、日志管理、WEB开发、数据库连接、MyBatis集成以及Docker的使用。讲解了SpringBoot的微服务特性、自动配置原理,以及如何配置和自定义SpringBoot应用。还探讨了SpringBoot与MyBatis的整合,使用Lombok简化代码,并介绍了MyBatis Generator的逆向工程功能。
摘要由CSDN通过智能技术生成

第一节,创建springboot工程


1、微服务

概念:微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议

2、SpringBoot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者

3、环境约束

  1. jdk1.8以上版本(java -version 可查看jdk)
  2. 2maven 3.3以上版本

4、目录结构

  1. static:静态资源文件
  2. templates:模板文件
  3. application.properties:配置文件

5、注意(Spring boot)

  1. springboot内置了Tomcat,不需要配置Tomcat,可以在application.properties对端口号等服务端信息进行配置
  2. SpringBoot将各个应用/三方框架 设置成了一个个"stater",要用哪个场景引入哪个场景即可"开箱即用"
    • @SpringBootApplication:spring boot 的主配置类
    • @SpringBootConfiguration包含@Configuration,表示“配置类”
    • @EnableAutoConfiguration:使spring boot可以自动配置

6、运行SpringBoot主程序测试

@SpringBootApplication
public class FirstbootApplication {
       
    public static void main(String[] args) {
   
	SpringApplication.run(FirstbootApplication.class, args);
	}
}

7、将程序打包成一个可以执行的jar包

<build>
    <plugins>
       <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
       </plugin>
    </plugins>
</build>

8、总结

  1. 自己写的代码通过@SpringBootConfiguration自动帮我们配置
  2. 三方依赖通过@EnableAutoConfiguration开启使用即可

第二节,SpringBoot基本配置


一、SpringBoot默认使用的全局配置文件

  • application.properites
  • application.yml
  • 作用:可以对一些默认配置值进行修改
  • 注意:配置文件的名称是固定的

二、如何修改springBoot的默认配置

模式:

  1. SpringBoot在自动配置组件的时候,会先看容器中有没有用户自己配置的(@Bean、@Component)如果没有才自动配置,如果有些组件可以有多个(ViewResolver),会将用户的配置和自己的默认的结合起来

三、.yml(YAML)

YAML(YAML Ain’t Markup Language)一种简洁的标记语言的文件,以数据为中心比json、xml等更适合做配置文件

sercer:
	port:8090

四、.yml基本语法

1、语法规则
  1. 大小写敏感
  2. 使用缩进表示 层级关系
  3. 缩进时不允许使用 tab键,只允许使用空格
  4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
2、值的写法
  1. 字符串默认不用加上单引号或者双引号
  • “”:双引号:不会转义字符串里面的特殊字符,特殊字符会作为本身想表示的意思
  • ‘’:单引号:会转义特殊字符,特殊字符终只是一个普通的字符串数据
  1. 对象 (对象的一组键值对,使用冒号结构表示)
#普通写法
firends:
	name: 张三
	age: 20
	
#行内写法
firends: {
   name: 张三,age: 20}
  1. 数组 (用值表示数据中的一个元素)
#普通写法
person:
  - student
  - boss
  - teacher
#行内写法
person:[student, boss, teacher]
  1. Map (直接使用键值对)
#普通写法
name: tian
age: 12
#行内写法
{
   name: tian, age: 12}

五、配置文件

  1. 配置文件乱码解决方式
    在这里插入图片描述

  2. @Value获取值和@ConfigurationProperties获取值比较

    功能 @ConfigurationProperties @Value
    指定方式 批量注入配置文件中的属性 一个个指定
    松散语法 支持 不支持
    SpEl 不支持 支持
    JSR303数据校验 支持 不支持
  3. @Property Source & @ImportResource的区别

    @Property Source:加载指定的配置文件

    @ImportResource:导入Spring的配置文件,让配置文件里面的内容生效

六、配置文件占位符

  1. 随机数

    ${
         random.value}
    ${
         random.int}
    ${
         random.long}
    ${
         random.int(10)}
    ${
         random.int(1024,65536)}
    
  2. 可使用占位符获取之前配置的值,如果没有可以用 “:”指定默认值

七、激活指定profile

  1. 在配置文件中指定 spring.profiles.active=dev

  2. 命令行:

    java-jar spring-boot-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;

  3. 虚拟机参数

    -Dspring.profiles.active=dev

八、配置文件加载位置

​ -file:./config/

​ -file:./

​ -classpath:./config/

​ -classpath:/

​ 优先级由高到低,高优先级的配置会覆盖低优先级的配置,同时互补;

九、自动配置原理

  1. SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration

  2. 每一个自动配置类进行自动配置功能

  3. 所有在配置文件中能配置的属性都是在xxxxProperties类中封装,可以参照功能对应的属性类

  4. 我们能配置的属性都是来源于Properties

  5. 一但配置类生效,配置类会给容器中添加各种组件,组件的属性是从对应的properties类中获取的,properties类里面的每一个属性又是和配置文件绑定的

  6. 精髓:①、SpringBoot启动会加载大量的自动配置类

    ​ ②、先看我们需要的功能有没有SpringBoot默认写好的自动配置类

    ​ ③、再看这个自动配置类有哪些组件(要用的组件有,就不用自己配置了)

    ​ ④、给容器中自动配置类添加组件的时候,会从properties类中获取属性,可以在配置文件中指定这些 属性的值

    ​ ⑤、自动配置类必须在一定的条件下才能生效,可以通过配置debug=true打印自动配置报告

    @Configuiation								//表示这是一个配置类
    @EnableConfiguiationProperties(xxx.class)	//启动指定类的功能进行绑定
    @ConditionalOnWebApplication	//判断当前是否是web应用,如果是当前配置生效
    @ConditionalOnClass(xxx.class)	//判断当前项目有没有xxx类
    	//CharacterEncodingFilter:SpringMvc中进行乱码解决的过滤器
    @ConditionalOnProperty			//判断配置文件中是否存在某个配置
    @Bean	//给容器中添加一个组件
    

第三节,日志


一、常用日志框架

  1. 市面上常用的日志框架:JUL,JCL,jboss-Logging,logback,log4j,log4j2,slf4j…

    日志门面 日志实现
    JCL(jakarta Commons Logging)
    slf4j(Simple Logging Facade for java)
    jboss-Logging
    log4j
    log4j2
    JUL(java.util.logging)
    Logback
    springboot选用slf4jLogback

二、如何让系统中所有的日志都统一到slf4j

  1. 将系统中其他日志框架先排除掉
  2. 用中间包来替换原有的日志框架
  3. 导入slf4j其他的实现
  4. SpringBoot能自动适配所有的日志,如果要引入其他框架,一定要把其他框架的默认日志依赖移除掉
  5. 在这里插入图片描述
  • 查看依赖关系:右击Diagram→Show Dependencies…

三、日志配置的修改与格式

  1. 日志输出配置修改

    #指定日志级别
    logging.level.com.sboot.firstboot=trace
    #指定输出日志位置
    logging.path=/spring/log
    #指定控制台输出日志格式
    logging.pattern.console=控制台日志
    #指定文件输出日志格式
    logging.pattern.file=文件日志
    #激活开发环境
    spring.profiles.active=dev
    #禁用缓存
    spring.thymeleaf.cache=false
    
  2. 日志输出格式

    %d:表示日期时间

​ %thread:表示线程名

​ %-5level:表示级别从左显示5个字符宽度

​ %logger{50}:表示logger名字最长50个字符,否则按照句点分割

​ %msg:表示日志消息

​ %n:表示换行

​ eg:%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n

  1. 指定配置

    logback.xml:直接被日志框架识别了

    logback-spring.xml:日志框架不加载,由springBoot加载,可使用springboot的高级功能

第四节,SpringBoot WEB开发


一、开发步骤

  1. 创建SpringBoot应用,选中我们需要的模块、、、、、
  2. 在配置文件中指自己编写业务代码

二、SpringBoot对静态资源的映射规则

  1. webjars:以jar包的方式引入静态资源

  2. 访问当前项目静态资源

    "classpath:/META-INF/resources"
    "classpath:/resources"
    "classpath:/static"
    "classpath:/public"
    "/"	//当前项目根路径
    
  3. 欢迎页/首页 默认访问静态资源文件夹下的 index.html

  4. 网页图标默认访问静态资源文件下的 /favicon.ico

三、模板引擎

常用引擎:jsp、Velocity、Freemarker、thymeleaf(Spring推荐)

  1. Thymeleaf使用&语法

    把HTML页面放在classpath:/templates/下 Thymeleaf就可以自动渲染

    使用:

    ①导入thymeleaf的语法空间

    <html lang="en" xmlns:th="http://www.thymelealf.org"/>
    

    ②使用thymeleaf语法

四、扩展和接管SpringMVC

1)扩展SpringMVC

​ 方法:编写一个配置类(@Configuration),是WebMvcConfigurAdapter类型,不能标注@EnableWebMvc,SpringBoot既保留了自动配置,也能

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习尚硅谷视频整理的文档 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值