- Spring使用来干什么的
是一个轻量级的企业型的框架,主要是永来应对企业应用开发的复杂性而创建的
是一个三层架构:
- web层Spring MVC
- 业务层Spring的IoC
- 持久层Spring的JDBC、ORM、等持久层框架
- IOC和AOP
IOC控制反转:降低代码之间的耦合度,最常见的方式就是依赖注入(核心)还有一种是依赖查找
依赖注入:构造函数注入,set注入,注入集合属性
基于注解的ioc:主要是为了降低程序间的耦合,使用@compoent
高内聚低耦合
当我们需要一个对象时,不需要间接或者直接的创建一个对象,而是直接调用spring为我们使用自己的工厂模式创建我们所需要的对象
AOP面向切面 :就是将可以影响到多个类的公共行为都封装到一个可重用模块 降低耦合度 将一个个的对象的相似的方面横向抽象成一个切面,对这个切面进行事物管理记录日志的公用操作的处理过程
可以进行方法的增强
底层实现方式:使用动态代理方式进行实现的
动态代理的特点:字节码随用随创建,随用随加载
动态代理的两种方式:基于接口,基于子类
作用:在程序运行期间,不修改源代码对已有方法进行修改
优势:减少代码的重复,提高开发效率,方便维护
主要是负责:日志记录,性能统计,安全控制,事务处理,异常处理
在方法的开头和结尾进行调用log方面的来进行开头和结尾的日志打印
实现原理:
①将复杂的需分解出不同的方面,将公共功能集中解决
②采用代理机制组装起来运行,在不改变原有基础上对代码进行增强处理,增加新的功能
- spring的事物
Spring事物管理:支持两种事物类型的事物管理:编程式事务管理,声明式事务管理
Spring的事物传播机制:读未提交,读已提交,重复读,序列化
什么是事物
两个对象在上传时要么一起成功要么一起失败
事物的属性:
原子性,一致性,持久性,隔离性
事物的创建:
隐式事物:没有明显的开启和结束的标记
显式事物:有明显的开启和结束的标记
事物的隔离级别:
脏读, 幻读 和 不可重复读
- 常用的注解
@component, @controller, @service, @repository, @autowired, @resources, @value, @configuration, @bean, @propertysource, @impot
- Spring注解和xml的选择问题
注解:配置简单,维护方便
Xml:在修改时不用修改源码,不会涉及到重新编译和部署
- Spring框架中的单例bean线程不安全
- Spring中如何注入一个java集合:list类型注入set类型注入map类型注入props类型注入
- @Resources注解和@Autowrid注解区别:@resources是按照byName注入,@Autowrid是按照bytype注入的
- Spring配置文件:xml文件
- Spring的好处:轻量,控制反转(IOC),面向切面(AOP把业务逻辑和系统服务分开),异常处理,容器,MVC框架