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

相关推荐
Diamond技术流2 分钟前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
密码小丑3 分钟前
11月4日(内网横向移动(一))
笔记
斑布斑布5 分钟前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
鸭鸭梨吖1 小时前
产品经理笔记
笔记·产品经理
Chef_Chen1 小时前
从0开始学习机器学习--Day13--神经网络如何处理复杂非线性函数
神经网络·学习·机器学习
齐 飞1 小时前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
lulu_gh_yu1 小时前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
成富2 小时前
文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现
数据库·人工智能·sql·spring·oracle
丫头,冲鸭!!!2 小时前
B树(B-Tree)和B+树(B+ Tree)
笔记·算法
Re.不晚2 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea