一:配置优先级
1.配置
为spring项目配置属性
通过配置文件,或通过 java系统属性与命令行参数
或 非IDEA中,已打包的项目通过命令行配置
1.1 配置文件优先级
在三个配置文件对于同一属性配置了3次,其优先级?
1.2通过 java系统属性与命令行参数 配置
1.3 已打包的项目 配置属性(java系统属性与命令行参数)
1.4 5种配置属性方法的优先级
二:Bean管理
1. 如何在IOC容器种手动的获取到Bean对象
2. 如何配置Bean对象的作用域
3. 如何管理第三方Bean对象
1.
1.手动获取Bean对象
默认情况下,SpringBoot项目在启动的时候会自动的创建IOC容器(也称为Spring容器),并且在启动的过程当中会自动的将bean对象都创建好,存放在IOC容器当中。应用程序在运行时需要依赖什么bean对象,就直接进行依赖注入就可以了。
主动获取bean对象,3种方式
根据bean对象的name , 类型,
1.1 3种方法示例
1.2 IOC容器中的对象默认单例
获取3次,但地址值相同,是同一个对象。在IOC容器中的对象默认单例,只有一个。
下一节:通过作用域可控制每次掉调用DeptController都可以创建一个bean对象
1.3 注意事项
2.配置Bean对象的作用域
IOC容器中的bean对象是单例还是多例,取决于bean对象的作用域
2.1 示例--单例bean对象
2.2 @lazy注解,延迟初始化(单例)
2.3@Scope("prototype")每次使用bean时,都会创建新的实例
bean对象对应的类前加
3.管理第三方Bean对象
自己定义的bean对象,通过以下这4个注解即可创建使用
3.1 声明配置类来管理第三方bean对象
3.2在配置类中的第三方bean中引入方法对象
作为形参注入
三:SpringBoot原理
Spring框架繁琐
1、起步依赖
起步依赖的原理--maven的依赖传递
在Spring中,导入很多依赖
但在Spring Boot中导入一个依赖,可以通过maven的依赖传递自动导入其所需依赖
Spring:
Spring中导入了springboot-starter-web后,还要一个个导入下面其所以来的依赖,繁琐
2、自动配置
图中的问号:Spring Boot如何通过引入依赖,就可以自动将jar包中的第三方bean对象交给IOC容器管理,可以在项目中直接注入
(解析自动配置的原理就是分析在 SpringBoot项目当中,我们引入对应的依赖之后,是如何将依赖jar包当中所提供的bean以及配置类直接加载到当前项目的SpringIOC容器当中的。)
2.1 自动配置原理--面试高频
Spring Boot只会在子包下扫描Bean对象。对于扫描不到的Bean对象,无法注入。此时需要手动配置
(1)问题:扫描Bean对象的范围
(2)方案一:@ComponentScan 组件扫描(不推荐)
指明扫描的包范围
(3)@Import导入(普通类/配置类/ImportSelector接口实现类)
Spring Boot中 没有采纳@ComponentScan 组件扫描,配置范围(因为繁琐)。
逐个找要扫描的包
示例:
推荐使用@EnableXxxx注解
第三方依赖
(4)源码跟踪--@SpringBootApplication注解
(5)条件装配注解(@Conditional)
(6)小结--重点
2.2 案例
【Java Web】014 -- SpringBoot原理(配置优先级、Bean管理、SpringBoot原理)_springboot java class类spring bean管理-CSDN博客
三:Web后端开发总结
1.框架
SpringMVC:
在Spring框架的生态中,对web程序开发提供了很好的支持,如:全局异常处理器、拦截器这些都是Spring框架中web开发模块所提供的功能,而Spring框架的web开发模块,我们也称为:SpringMVC
SpringMVC不是一个单独的框架,它是Spring框架的一部分,是Spring框架中的web开发模块,是用来简化原始的Servlet程序开发的。
SSM:
外界俗称的SSM,就是由:SpringMVC、Spring Framework、Mybatis三块组成。
SpringBoot:
基于传统的SSM框架进行整合开发项目会比较繁琐,而且效率也比较低,所以在现在的企业项目开发当中,基本上都是直接基于SpringBoot整合SSM进行项目开发的。
2.技术栈
Filter过滤器、Cookie、 Session这些都是传统的JavaWeb提供的技术。(会话技术-过滤器,拦截器)
JWT令牌、阿里云OSS对象存储服务,是现在企业项目中常见的一些解决方案。
IOC控制反转、DI依赖注入、AOP面向切面编程、事务管理、全局异常处理、拦截器等,这些技术都是 Spring Framework框架当中提供的核心功能。
Mybatis就是一个持久层的框架,是用来操作数据库的。
3.三层架构
在三层架构当中,Controller控制器层负责接收请求响应数据,Service业务层负责具体的业务逻辑处理,而Dao数据访问层也叫持久层,就是用来处理数据访问操作的,来完成数据库当中数据的增删改查操作。
在三层架构当中,前端发起请求首先会到达Controller(不进行逻辑处理),然后Controller会直接调用Service 进行逻辑处理, Service再调用Dao完成数据访问操作。
四:Maven高级
【Java Web】015 -- Maven高级(分模块设计与开发、继承与聚合、私服)-CSDN博客
不难,看一下知识点即可