spring的事务

Posted 拿红罗卜钓鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring的事务相关的知识,希望对你有一定的参考价值。

属于 数据持久层,而在实际开发中,不会使用 spring 作为持久层框架
1. 使用 ioc 相关注解
使用步骤:
1 、导入相关 jar (core beans context expression jcl 以及 aop )
2 、创建 spring 的配置文件 需要的命名空间及约束 ( beans context )
3 、开启注解扫描,告诉程序注解的对象放在了程序的哪个包下面
4 、创建类,使用注解进行对象创建, @Component @Controller @Service
@Repository
此类注解用于 ioc 中的对象声明 属性:
value 用来设置对象在容器中的名称 ,如果没有设置 value ,则默认将类名首字
母小写作为对象名称
5 、使用依赖注入,将容器中的对象赋值类响应的属性; @Autowired @Qualifier
@Resource
此类注解用于 DI 依赖注入,将对象赋值给类中的属性
@Autowired :和属性的类型有关,与属性名称无关;
1. 先找当前容器中是否有此类型的对象,如果有且仅有一个直接注入;
2. 如果找多个此类型的对象,则按照属性名称去找对象,如果有一样名称的直
接注入;
3. 如果没有一样名称的,则使用 @Qualifier("bean 名称 ") 指定具体 bean
对象;
@Resource :先根据属性名称去容器中寻找对象
1. 先去容器中寻找和属性名称相同的对象,如果有则直接进行注入;
2. 再根据类型进行匹配对象;
3. 如果此时还是确定不了具体对象,需要使用 name 属性指定 bean 对象的名称
@Resource(name="userDao1")
6 、创建测试类,先加载容器,获取容器中的对象,使用对象;
2. 使用 aop 相关注解
使用步骤 ( 注解方式 )
1 、导入相关 jar ( core beans context expression jcl 以及 aop )
还需要 ( aspects 以及第三方 jar aspectjweaver.jar)
2 、创建 spring 的配置文件 需要的命名空间及约束 ( beans context aop )
3 、开启 IOC 注解扫描,告诉程序注解的对象放在了程序的哪个包下面,并且再开启 AOP 的注解
支持
4 、创建切面类,即代理类,需要在类上方使用 @Aspect 注解,表示当前类为切面类,同时加
@Component 注解将切面类交由 spring 容器进行管理吗,在类中的不同方法上使用 @Before
@AfterRetruning @After @AfterThrowing @Around
可以使用无参无返回无方法体的方法定义为 切入点表达式 基本写法:
基本语法: execution( 权限修饰符 返回值类型 包名 . 包名 . 包名 . 类名 . 方法名 ( 参数
类型,参数类型 ))
通配符写法: execution( * *..*.*(.. ) )
5 、还是执行原来的方法,就可以自动进行 aop 的切面编程处理; 1. 编程式事务 了解
使用编程代码,自己手写事务提交、回滚,麻烦;
2. 声明式事务 掌握 ( 基于 xml 配置文件 基于注解的方式 )
只需要在程序中进行声明,此程序、此类、此方法有事务,然后 spring 自动进行事务管理 ( 基于
aop 实现 )
使用步骤 ( 使用 xml 的方式 )
1. 导入相关 jar ( core beans context expression jcl 以及 aop
aspectjweaver.jar )
外加 ( jdbc tx mysql-java 的连接 jar )
2. 创建 spring 的配置文件 需要的命名空间及约束 ( beans aop tx )
3. 创建需要使用到事务的类 即业务层类;
转账业务: zs -1000 ls +1000
4. 去数据库中创建表 user(id , name ,money )
5. 使用 java 代码连接数据库 spring 的自带数据库对象连接

以上是关于spring的事务的主要内容,如果未能解决你的问题,请参考以下文章

如何手动开启spring事务

Spring本地事务

Spring事务看这一篇就够了!!(Spring事务特征+Spring事务管理+实现+Spring七种事务传播行为+集成MyBatis)

Spring事务看这一篇就够了!!(Spring事务特征+Spring事务管理+实现+Spring七种事务传播行为+集成MyBatis)

Spring中的事务传播属性详解

spring的读写事务和只读事务的区别