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 )
2.
创建
spring
的配置文件 需要的命名空间及约束
( beans aop tx )
3.
创建需要使用到事务的类 即业务层类;
转账业务:
zs -1000 ls +1000
4.
去数据库中创建表
user(id , name ,money )
5.
使用
java
代码连接数据库
spring
的自带数据库对象连接
以上是关于spring的事务的主要内容,如果未能解决你的问题,请参考以下文章
Spring事务看这一篇就够了!!(Spring事务特征+Spring事务管理+实现+Spring七种事务传播行为+集成MyBatis)
Spring事务看这一篇就够了!!(Spring事务特征+Spring事务管理+实现+Spring七种事务传播行为+集成MyBatis)