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

相关推荐
建投数据1 小时前
建投数据与腾讯云数据库TDSQL完成产品兼容性互认证
数据库·腾讯云
xlsw_1 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
Hacker_LaoYi2 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
岁月变迁呀2 小时前
Redis梳理
数据库·redis·缓存
独行soc2 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
神仙别闹2 小时前
基于java的改良版超级玛丽小游戏
java
你的微笑,乱了夏天2 小时前
linux centos 7 安装 mongodb7
数据库·mongodb
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭3 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
工业甲酰苯胺3 小时前
分布式系统架构:服务容错
数据库·架构
暮湫3 小时前
泛型(2)
java