什么是Spring或di和ioc区别或Spring ioc原理是什么?或什么是Spring aop或什么是事务
什么是spring
spring就是把每个bean(实体类)与bean的关系全部交给第三方容器进行管理,那么这个容器就是spring,整个对象的生命周期进行管理的。
spring的核心 ioc(控制反转)、di(依赖注入)、aop(面向切面编程)
di与ioc区别是
di做注入,ioc是创建对象
spring ioc原理
①解析xml配置 获取bean class地址
②使用java的反射机制 进行实例化对象
③返回对象
springioc创建对象有哪些方式?
(1)调用无参数构造器=构造函数
(2)带参数构造器
(3)工厂创建对象
工厂类,静态方法创建对象
工厂类,非静态方法创建对象
构造函数
工厂
注解
Spring中如何给对象的属性赋值?【DI,依赖注入】
(1)通过构造函数
(2)通过set方法给属性注入值
(3)p名称控件(p标签 通过反射进行set赋值)
(4)自动装配(了解)
(5)注解
set注入原理是什么?
属性必须要有一个set方法
set是注入里面的
什么是Spring aop 即 面向切面编程 应用场景? 权限 日志 控制 事务 原理就是aop
提到aop 自然要结合代理设计模式
静态代理
动态代理
jdk动态代理,cglib动态代理
jdk代理和cglib代理区别?
jdk代理(反射)和cglib代理(asm)
springaop cglib动态代理
spring aop 编程
aop 面向切面编程
功能:让关注点代码与业务代码分离
关注点,
重复代码就叫关注点
切面,
关注点形成的类,就叫切面(类)
切入点,
执行目标对象方法,动态植入切面代码
什么是事务?
事务就会保证数据的一致性, 事务的特性就是
原子性(不可分割),一致性( 转账 a减 B加),隔离性(互不影响,在并发编程 两个线程同时操作事务),持久性(数据永存在数据库)
事务用法
①编程事务(理解成开车手动挡)
②声明式事务
xml方式 注解方式
事务的注意点或坑
事务是程序运行如果没有错误,会自动提交事务,如果程序运行发生异常,则会自动回滚。
xml方式和注解如果使用了try捕获异常时,一定要在catch里面手动回滚 事务手动回滚代码
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
使用@Transaction 注解还得开启事务注解
<!-- 开启事物注解 -->
<tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
事务的传播 ~~~~~~~~进阶篇
spring的传播行为
ROPAGATION_REQUIRED 如果当前有事物,就用当前的事物,不会新增事物。
ROPAGATION_REQUIRED_NEW 如果当前有事物,不会加入当前事物,会新增事物,
事务传播行为类型
说明
PROPAGATION_REQUIRED
如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
PROPAGATION_SUPPORTS
支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY
使用当前的事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW
新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED
以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER
以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED
如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类 似的操作。
浙公网安备 33010602011771号