Spring基础知识

什么是Spring?

spring是具有轻量级的IOCAOP的一站式开发框架,用于简化企业级软件的开发。

IOC:反转控制

反转控制是什么?

将类的创建和管理权统一交给spring框架,我们需要时,直接从框架中获取即可

例如:

之前:LoginDao loginDao=new LoginDao();

Spring:LoginDao loginDao;

即省去了对象的创建

关键字:

java 复制代码
@Component	//用于创建对象类,用在model层

@Service	//用于创建对象类,用在service层

@Repository	//用于创建对象类,用在dao层

以上三种注解都具有创建对象的功能,只是根据扩展性不同用于不同的开发层

java 复制代码
@Autowired	//用在字段上或set方法上,若用在字段上则无需再写setter方法,spring自动生成
java 复制代码
@Autowired
LoginDao loginDao;

若是没有关键字则我们需要添加一个set方法

java 复制代码
public void setLoginDao(LoginDao loginDao) {    
​this.loginDao = loginDao;
​}

关键字修饰后则不再需要上述方法代码,spring框架自动生成

AOP:面向切面编程

面向切面编程?

在我们程序员写代码时,经常会有重复的代码出现这也叫做非业务代码,因此我们可以将这非业务代码整合起来,当需要使用时调用即可。

例如:与前端互通时我们需要用到Servletrequestattributes,那么我们就将它的创建抽取出来包装,这样就省去了许多重复的Servletrequestattributes的创建,或是在mybatis框架里面,有SqlSession.permit与SqlSession.close(),这些都可以交由AOP解决。

若是需要在多个方法中加入相同的新的功能我们也能使用面向切面思想,在不改变原来代码的情况下为其添加额外功能

面向切面关键字:

java 复制代码
@Before	//在代码执行前插入

@After	//在代码执行后插入,无论是否出现异常

@Afterreturning	//在代码执行后无报错插入,若报错则不插入

@Afterthrowing	//不论是否报错都会在代码执行或报错后插入

@Around	//方法执行前后都进行插入

一站式:

对web层的servlet进行封装开源,可以很方便地集成其他的框架

spring框架缺点:

框架是轻量级的,需要导入的配置是重量级的,需要导入大量模板化的配置

spring事务管理:

在代码运行时,后端时常会与数据库进行交互,若是在一个方法中有多个交互,运行异常时,会出现数据的信息错误更改,例如:

转账时,用户a转走1000元,用户b本该接收1000元但在期间发生运行错误,则用户a的1000元转出,用户b却未接收到。

这时就需要管理这些事务的进程,spring的事务管理也因此而来,事务的作用就是让每个用户的操作都是可靠的,每个事物的代码的状态都必须一致,要么都执行,要么都不执行从而保证信息的完整与安全。

javascript 复制代码
public void save(){
       loginDao.insertAdmin1();
       System.out.println(10/0);
       loginDao.insertAdmin2();
}

执行完第一行语句后,不会第一时间提交,执行第二行时运行出错,因此整体sql语句不向数据库做提交。若是没有第二行语句,则当该方法运行完成之后向数据库提交sql语句执行。

相关推荐
coderSong256818 分钟前
Java高级 |【实验八】springboot 使用Websocket
java·spring boot·后端·websocket
远方160938 分钟前
14-Oracle 23ai Vector Search 向量索引和混合索引-实操
数据库·ai·oracle
Mr_Air_Boy1 小时前
SpringBoot使用dynamic配置多数据源时使用@Transactional事务在非primary的数据源上遇到的问题
java·spring boot·后端
豆沙沙包?2 小时前
2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
java·开发语言·游戏
GUIQU.2 小时前
【Oracle】数据仓库
数据库·oracle
年老体衰按不动键盘2 小时前
快速部署和启动Vue3项目
java·javascript·vue
恰薯条的屑海鸥2 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十六期-SSRF模块)
数据库·学习·安全·web安全·渗透测试·网络安全学习
咖啡啡不加糖2 小时前
Redis大key产生、排查与优化实践
java·数据库·redis·后端·缓存
liuyang-neu2 小时前
java内存模型JMM
java·开发语言
曼汐 .2 小时前
数据库管理与高可用-MySQL高可用
数据库·mysql