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 进行销毁。

相关推荐
创意锦囊1 小时前
随时随地编码,高效算法学习工具—E时代IDE
ide·学习·算法
stm 学习ing1 小时前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl
尘觉1 小时前
算法的学习笔记—扑克牌顺子(牛客JZ61)
数据结构·笔记·学习·算法
1 9 J1 小时前
Java 上机实践11(组件及事件处理)
java·开发语言·学习·算法
Blankspace学2 小时前
Wireshark软件下载安装及基础
网络·学习·测试工具·网络安全·wireshark
南宫生2 小时前
力扣-图论-70【算法学习day.70】
java·学习·算法·leetcode·图论
bohu832 小时前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口
HE10292 小时前
威尔克斯(Wilks)分布
学习
科马3 小时前
【Redis】缓存
数据库·redis·spring·缓存
cloud___fly3 小时前
Spring AOP入门
java·后端·spring