SpringBoot关键知识点总结

41 篇文章 0 订阅
16 篇文章 0 订阅

这期主要整理SpringBoot中的一些知识点,便于以后快速查看

在这里插入图片描述

提示这是我的个人IT资源网站,所有资源都免费,注册登录后就可以看到密码,需要什么大家尽情选取!

  1. 当我们通过@Autowired注入的时候,如果注入的对象是用接口生命,而此时接口实现类有多个,那么就会报错,无法通过编译,因为此时发生了歧义,容器不知道加载哪个实现类,容器加载的时候,主要通过类名和类型来查找的,此时类型相同,所以就不知道加载哪个,有两个解决办法,一是通过在类上加注解@Primary,指定优先加载此类,那么当发生歧义的时候,会优先加载加@Primary的类,但是这种方法局限性太大,可能其它地方并不需要加载此类,第二种方法就是通过类名具体定位了,容器加载类时,会给类起一个别名,如果我们没有特别标注别名,那么一般是类名首字母小写就是别名,我们需要在注入的地方加上注解@Qualifier(""),这样容器就能定位到我们需要注入的类了。
  2. 我们如果想让容器管理某个自定义类,那么需要给类加上解释注解,表明让容器去加载,一般没有特殊含义的类,我们使用@Component或者@Bean注解,@SpringBootApplication注解中已经包含@ComponentScan注解,所以是在启动类当前包和子包的注释的类都会被容器加载,但是如果我们想让容器也管理我们外部的jar包,那么我们就需要在某个配置类上加上@ComponentScan注解,并且指定扫描的范围以及策略,一般容器加载的时候,就帮我们实例化了,但是有时候我们想用的时候再实例化,那么可以加上lazyInit = true。
  3. 如果我们希望类的一些属性从配置文件中初始化,那么可以使用@Value("${}")注解,如果配置文件的名称和类属性名完全一致,则可以在类上加注解@ConfigurationProperties(“前缀”),默认找的是application.properties,有时候我们可能写在了其它的配置文件,那么需要@PropertySource(value={“文件相对路径”}, ignoreResourceNotFound = true)注解声明配置文件路径。
  4. @Conditional注解可以通过判断条件是否满足去装配Bean,需要我们自定义一个条件判断类,实现Condition接口,然后在需要判断的方法或类上加上@Conditional(自定义条件判断类)。
  5. 当我们测试时,可以使用AnnotationConfigApplicationContext去加载某个特定包,那么只会装配该包下的类以及涉及的其他包的类,我们可以设置装配类的作用域,默认是ConfigurableBeanFactory.SCOPE_SINGLETON,代表单例,我们每次去取都会取到同一个实例,所有Spring应用可以使用,相对应的就是ConfigurableBeanFactory.SCOPE_PROTOTYPE,代表多例,每次去取都会取到不同实例,对于Web应用则对应三个作用域,request、session、application,request代表Web工程单次请求,每次请求都会产生一个新实例,WebApplicationContext.SCOPE_REQUEST,session代表一个HTTP会话产生一个实例,WebApplicationContext.SCOPE_SESSION,application代表整个Web工程一次生命周期内使用同一个实例,WebApplicationContext.SCOPE_APPLICATION,在使用它们三个时,需要加上proxyMode = ScopedProxyMode.TARGET_CLASS,不然无法启动,会报错。
  6. 有时候我们整合的框架不是以注解装载Bean的,例如Dubbo,那么就需要我们通过XML装载Bean了,此时在需要装载的地方加上注解@ImportResource。
  7. 当我们自定义数据源信息时,启动后会报Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedde的错,是因为容器在启动时,会自动去application的配置文件中找spring.database的信息,所以我们需要在@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})中排出加载spring.database信息,这样就不会报错了。
  8. 在idea的Run/Debug Configuration中切换SpringBoot多环境,优先级Program arguments(程序参数,不能切换配置文件):输入指令–spring.profiles.active=* > 在Active Profiles(指定当前运行项目环境,能切换配置文件):输入* > 在VM options(JVM参数,能切换配置文件)输入-Dspring.profiles.active=* > 在Environment variables(系统环境变量,能切换配置文件): 输入spring.profiles.active=*,程序参数和指定当前运行项目环境只在WEB项目中起作用,JVM参数和系统环境变量在WEB项目和main函数中加载配置类都起作用
  9. 使用注解@Value或@ConfigurationProperties将属性文件赋值类属性时,需要在@Autowired或@Resource依赖注入情况下使用,不能main函数中直接加载配置类使用,获取不到值
  • 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、付费专栏及课程。

余额充值