Spring作用


1. Spring框架作用:
Spring可以整合主流的第三方框架. 使软件调用变成一个整体

IOC/DI:
IOC(控制反转): 将对象的创建的权利交给第三方Spring容器进行统一管理(不把对象的创建写死在类里面, 配合面向接口编程, 当需求有变化时可以不用改动代码)
优点: 实现了程序调用的松耦合!!!

DI(依赖注入): 为Spring容器中对象的属性赋值, 一般对象中的属性以接口最为常见
注入方式:
	a.set注入
	b.构造注入

AOP: 
作用: 对业务方法进行扩展(松耦合)
常见应用:
	a.事务控制(减少方法冗余, 解耦 - 不用在方法里面每次声明事务开始和事务提交)
	b.日志记录
	c.安全控制(AOP/拦截器都可以实现)
	d.缓存机制
	e.异常记录
	f.记录程序运行的时间, 对方法进行分析优化

AOP中通知类型
	a.环绕通知[Around advice]: 使用最多并且功能强大, 能够控制目标方法是否执行(其他四个不行)
	b.前置通知[Before advice]: 目标方法执行之前执行
	c.正常返回通知[After returning advice]: 目标方法执行之后执行
	d.异常返回通知(throwing ): 当目标方法出现异常时执行
	e:返回通知[After (finally) advice]: 相当于try..catch中finally, 始终要执行的通知

切入点表达式
作用: 判断当前方法是否执行切面(if)
	a.bean	类中的所有方法都会执行切面中的通知方法
	b.within(包名.类名)	按照类型进行匹配, 多个类型匹配使用within(包名.*)
	c.execution(返回值类型 包名.类名.方法名(参数列表))
		execution(* com.indihx..*.*(..)); //..*表示子孙包, .*表示子包, 参数列表..表示通配
		execution(* com.indihx..*.add(..)); //拦截com.indihx包下-所有类的-add()方法
		execution(* com.indihx..*.a*(int)); //拦截com.indihx包下-所有类的-以a开头的-只有一个int类型参数的-方法
	d.@annotaiton(com.indihx.Bingo); //匹配com.indihx包下的名称为Bingo的注解
	
	a,b粗粒度很少使用, c细粒度用的多, d在微服务开发中常用	
	切面公式: 切面 = 切入点表达式 + 通知*;

==========================================================================================================================================

2. Spring框架中如何维护对象
   Spring容器在启动时, 首先会解析xml(注解)配置文件, 之后在内存中创建一个大型的Map集合, 将bean的id当作Map当中的key, 之后利用反射机制实例化对象当作Map中的value
	a.数据结构: Map<key,value>, key:bean的id   value:对象
    b.默认单例模式(Map中同一个key出现两次会覆盖), 对象的生命周期和容器的生命周期相同(和Tomcat或其他服务器生命周期相同)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值