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语句执行。

相关推荐
阿冲Runner5 分钟前
创建一个生产可用的线程池
java·后端
写bug写bug14 分钟前
你真的会用枚举吗
java·后端·设计模式
喵手1 小时前
如何利用Java的Stream API提高代码的简洁度和效率?
java·后端·java ee
-Xie-1 小时前
Maven(二)
java·开发语言·maven
IT利刃出鞘1 小时前
Java线程的6种状态和JVM状态打印
java·开发语言·jvm
薛晓刚1 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队2 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术
星空下的曙光2 小时前
mysql 命令语法操作篇 数据库约束有哪些 怎么使用
数据库·mysql
小楓12012 小时前
MySQL數據庫開發教學(一) 基本架構
数据库·后端·mysql
天天摸鱼的java工程师2 小时前
Java 解析 JSON 文件:八年老开发的实战总结(从业务到代码)
java·后端·面试