Spring学习笔记1

今天内容:配置maven 搭建了springboot项目

约定大于配置(它默认的框架优先级比配置的要高,基本全都用它所默认的框架只有特殊需求的时候才会修改一小部分。)

IOC

Spring IOC

管理项目中java bean的生命周期

在项目运行阶段,程序中需要很多的对象来完成整体业务

springboot提供了很多注解标注类

@Controller @RestController (用于控制器,访问前台请求)

@Service (用于业务类)

@Repository (dao类 数据访问,访问数据库)

@Component (其他功能类) @Bean @Configuration

让spring管理这些类的生命周期

Spring提供了IOC的方式方便获取该对象

IOC==控制反转

容器和代码之间的控制权反转,代码中不需要明文调用

方法来获得对象,只需要声明该类需要什么类型的对象即可

DI

依赖注入DI 通过识别依赖关系注入对应的对象

Spring Bean的作用域

Spring Bean的作用域

singleton 单例模式 一个对象 默认

prototype 原型模式 每次需要都来一个新的对象

request web项目中请求作用域 每次请求都会创建一个新的对象

session 会话就是一个沟通的过程或访问整体的过程 每次会话都会创建一个新的对象。

GlobalSession 全局的 在搭建分布式或者集群时使用

springbean的生命周期

1.根据配置情况调用Bean构造方法或工厂方法实例化Bean

2.利用依赖注入完成Bean中所有属性值的配置注入

3.如果Bean实现了BeanNameAware接口,则Spring调用的Bean的SetBeanName()方法传入当前Bean的id值

4.如果Bean实现了BeanFactoryAware接口,则Spring调用setBeanFactory()方法传入当前工厂实例的引用

5.当一个Bean实现了ApplicationContextAware接口并在Spring容器中被实例化时,Spring容器会自动调用该Bean的setApplicationContext方法,并将应用程序上下文ApplicationContext作为参数传递进来

6.BeanPostProcessor 是 Spring 框架中的一个重要接口,它允许开发者在 Spring 容器创建和初始化 bean 的过程中,对 bean 进行自定义处理。这包括在 bean 实例化之后、属性设置之前(postProcessBeforeInitialization 方法),以及在 bean 初始化之后(postProcessAfterInitialization 方法)执行自定义逻辑

Spring 容器在创建和初始化每一个 bean 时,都会调用 CustomBeanPostProcessor 中的这两个方法,允许你进行自定义处理

7.InitializingBean 是 Spring 框架中的一个接口,它定义了一个 afterPropertiesSet 方法。当 Spring 容器创建 bean 的所有属性都被设置完成后,会调用这个方法。

8.如果在配置文件中通过 init-method 属性指定了初始化方法,则调用该初始化方法。

9.如果 BeanPostProcessor 和 Bean 关联,则 Spring 将调用该接口的初始化方法 postProcessAfterInitialization()。此时,Bean 已经可以被应用系统使用了。

10.如果在 <bean> 中指定了该 Bean 的作用范围为 scope="singleton",则将该 Bean 放入 Spring IoC 的缓存池中,将触发 Spring 对该 Bean 的生命周期管理;如果在 <bean> 中指定了该 Bean 的作用范围为 scope="prototype",则将该 Bean 交给调用者,调用者管理该 Bean 的生命周期,Spring 不再管理该 Bean。

11.如果 Bean 实现了 DisposableBean 接口,则 Spring 会调用 destory() 方法将 Spring 中的 Bean 销毁;如果在配置文件中通过 destory-method 属性指定了 Bean 的销毁方法,则 Spring 将调用该方法对 Bean 进行销毁。

相关推荐
HalvmånEver6 分钟前
Linux:初始网络(上)
linux·网络·学习·通信
王夏奇14 分钟前
python-pytest学习
python·学习·pytest
祁鱼鱼鱼鱼鱼16 分钟前
Nginx源码编译及平滑升级及回滚
学习
AnalogElectronic18 分钟前
云原生学习day1ubuntu安装docker,基础镜像打包
学习·docker·云原生
梵得儿SHI25 分钟前
Spring Cloud 高并发订单服务实战:从创建流程优化到 Seata 分布式事务落地(附代码 + 架构图)
分布式·spring·spring cloud·高并发·异步削峰·完整解决方案·限流降级
weixin_4588726130 分钟前
东华复试OJ二刷复盘6
学习
微露清风40 分钟前
系统性学习Linux-第四讲-进程控制
linux·服务器·学习
01二进制代码漫游日记41 分钟前
C/C++中的内存区域划分
c语言·jvm·数据结构·学习
@蓝莓果粒茶42 分钟前
OpenClaw 最终安装指南:Windows 下用 WSL2 + Ubuntu 跑通源码版
笔记·ai
HAREWORK_FFF42 分钟前
用CAIE认证为简历加分:AI学习者的标准学习周期与规划
人工智能·学习·百度