Spring框架基础知识

server/2024/9/23 8:37:38/

Spring框架基础知识笔记

Spring中bean的生命周期,指Bean从创建、初始化、使用到销毁的整个过程。
Bean实例化->依赖注入->Aware接口的回调->BeanPostProcessor前置处理->初始化方法->BeanPostProcessor后置处理->Bean使用->Bean销毁

循环引用(Circular Dependency)是指两个或多个Bean互相依赖,导致无法完成依赖注入的情况。BeanA的构造器依赖BeanB,而BeanB的构造器依赖BeanA;或者是BeanA有一个属性依赖于BeanB,而BeanB也有一个属性依赖于BeanA。这种循环依赖通过Spring的一级、二级、三级缓存机制是可以解决的。

java">@Component
public class BeanA {@Autowiredprivate BeanB beanB;public BeanA() {}public void setBeanB(BeanB beanB) {this.beanB = beanB;}
}@Component
public class BeanB {@Autowiredprivate BeanA beanA;public BeanB() {}public void setBeanA(BeanA beanA) {this.beanA = beanA;}
}
java">@Component
public class BeanA {@Autowired@Lazyprivate BeanB beanB;
}

spring框架中,使用注解singleton,一般是Scope注解代表bean可以在IOC容器中作为单例,使用prototype则一个bean可以定义多个实例。
而bean并不属于线程安全的范畴。有状态的都不安全(可修改)。

AOP是面向切面编程,也就是可以重用的模块,多次重复使用的方法进行封装,降低耦合问题。@Around("pointcut()")。(如日志记录)。

事务@Transaction)是为了确保一组操作在数据库中是原子性的(是一个不可分割的整体,所有操作要么都执行,要么都不执行),要么所有操作成功并提交,要么任何一个操作失败时,全部回滚,保持数据一致性。分为声明式事务管理编程式事务管理。事务失效的情况,一般就是抛出异常出问题。

java">@Service
public class MyService {@Transactionalpublic void someTransactionalMethod() {// 数据库操作}
}
java">// propagation 传播行为(REQUIRED当前方法必须在事务中运行),isolation 事务之间的隔离程度,timeout 事务执行最长时间,readOnly 只读
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED, timeout = 30, readOnly = false)
public void updateData() {// 更新数据库的操作
}

MVC框架Model处理数据和业务逻辑,View负责展示数据和用户界面,Controller协调模型和视图,处理请求和返回响应。


http://www.ppmy.cn/server/120192.html

相关文章

物理学基础精解【7】

文章目录 平面方程直角坐标及基本运算 参考文献 平面方程 直角坐标及基本运算 向量的四则运算 下面由文心一言自动生成 向量的四则运算主要包括加法、减法、数乘(标量乘法)和数量积(点积或内积),但通常不直接称为“除…

Elasticsearch如何排序,分页以及高亮查询

目录 一、排序 二、分页查询 三、高亮查询 一、排序 ES中默认使用相关度分数实现排序,可以通过搜索语法定制化排序。 GET /索引/_search { "query": 搜索条件,"sort": [{"字段1":{"order":"asc"} },{ "字…

NumPy库学习之argmax函数

NumPy库学习之argmax函数 一、简介 np.argmax 是 NumPy 库中的一个函数,用于找出数组中最大值的索引。这个函数可以应用于多维数组,并允许沿着指定的轴进行操作,从而返回该轴上最大值的索引。这在处理数据时非常有用,尤其是在需要…

WebServer

一、服务器代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <unistd.h> #define PORT 80 #define BUFFER_SIZE 1024 void ha…

2024年华为杯-研赛更新时间轴-资料分享

本次 助攻CDF题 问题一二三问均已完成更新&#xff0c;更新计划轴如图所示 由于赛题之间存在紧密的联系&#xff0c;单独发布问题一二&#xff0c;有可能与明天最终论文不相符&#xff0c;会根据后面问题对前面几问进行调整。个人建议&#xff0c;等明天上午的完整论文即可 题 …

Wpf使用NLog将日志输出到LogViewer

1 LogViewer LogViewer是通过UDP传输的高性能实时log查看器。 具有一下特性&#xff1a; 通过UDP读取日志通过文件导入日志导出日志到一个文件中排序、过滤&#xff08;日志树&#xff0c;日志等级&#xff09;和查找突出显示搜索文本从UPD接收日志时忽略IP地址列表多接收器支…

【nvm管理多版本node】下载安装以及常见问题和解决方案

nvm管理多版本node nvm 下载安装下载安装 nvm 常用命令其他常用命令 常见问题 nvm 下载安装 下载 nvm下载地址 每个版本下都有Assets&#xff0c;根据需要下载一个。 node下载地址 根据自己需要,可以下载可执行文件或者压缩包 安装 按提示安装即可。 安装过程中&#xff…

FreeRTOS的递归互斥锁

在FreeRTOS中&#xff0c;递归互斥锁&#xff08;Recursive Mutex&#xff09;是一种特殊类型的互斥锁&#xff0c;允许同一个任务多次获取锁而不会导致死锁。配置和使用递归互斥锁的步骤如下&#xff1a; ### 1. 配置FreeRTOS 确保你的FreeRTOS配置文件&#xff08;通常是Free…