您现在的位置是:主页 > news > 真人视讯网站开发/网站维护主要做什么

真人视讯网站开发/网站维护主要做什么

admin2025/5/14 8:41:58news

简介真人视讯网站开发,网站维护主要做什么,网站建设哪个便宜,wordpress刷评论在之前简单介绍了spring事务的用法,在spring中,事务的传播属性和隔离级别比较多,因此抽出来,单独写一篇来解释 注意:Transactional 只能被应用到public方法上, 对于其它非public的方法,如果标记了Transactional也不会报…

真人视讯网站开发,网站维护主要做什么,网站建设哪个便宜,wordpress刷评论在之前简单介绍了spring事务的用法,在spring中,事务的传播属性和隔离级别比较多,因此抽出来,单独写一篇来解释 注意:Transactional 只能被应用到public方法上, 对于其它非public的方法,如果标记了Transactional也不会报…

在之前简单介绍了spring事务的用法,在spring中,事务的传播属性和隔离级别比较多,因此抽出来,单独写一篇来解释

注意:@Transactional 只能被应用到public方法上, 对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能。

为了方便使用,直接使用注解配置spring事务,Ctrl+单击

打开注解,我们可以看到这个注解内的方法属性,

下面我们来解释常用几个属性的取值:

package com.zs.service;import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Transactional {@AliasFor("transactionManager")String value() default "";@AliasFor("value")String transactionManager() default "";/*** 事务传播特性:* Propagation.REQUIRED     判断当前方法是否存在事务,如果不存在就创建一个新的事务,如果存在就使用当前的事务* Propagation.REQUIRES_NEW 判断当前方法是否存在事务,如果不存在事务就创建一个新的事务,*                             如果存在事务,就把当前事务挂起,在启动一个新的事务* Propagation.NESTED       嵌套事务。判断当前方法是否存在事务,如果不存在就创建一个事务,如果存在事务就把当前事务挂起,*                              再启动一个当前事务的子事务,这样如果父事务产生异常,那么即使子事务没有异常也会回滚。* Propagation.NEVER        当前方法不应该运行在事物中,如果有事务就抛出异常;* Propagation.NOT_SUPPORTED当前方法不应该有事务,如果有事务存在,将它挂起,以无事务状态运行* Propagation.MANDATORY    当前方法必须要在有事务方法中运行,不然就抛出异常;如果有事务,就加入当前事务。* Propagation.SUPPORTS     支持事务,如果有事务,就加入事务中,如果没有事务,就以无事物的方式运行;* @return*/Propagation propagation() default Propagation.REQUIRED;/*** 设置隔离级别* Isolation.DEFAULT            底层数据存储的默认隔离级别,sqlServer与oracle默认为已提交读* Isolation.READ_COMMITTED     已提交读    读取已提交数据(会出现不可重复读和幻读)* Isolation.READ_UNCOMMITTED   未提交读    读取未提交数据(会出现脏读, 不可重复读) 基本不使用;* Isolation.REPEATABLE_READ    可重复读    可重复读(会出现幻读);在一个事务中进行查询时,*                                          不允许读取其他事务update的数据,允许读取到其他事务提交的新增数据* Isolation.SERIALIZABLE       序列化* @return*/Isolation isolation() default Isolation.SERIALIZABLE;/*** 该属性用于设置事务的超时秒数,默认值为-1表示永不超时* @return*/int timeout() default -1;/*** 设置当前事务是否为只读事务,设置为true表示只读,false表示可读写,默认为false,* 如果当前事务为查询操作,可以设置为true,可以提高程序运行效率* @return*/boolean readOnly() default false;/*** 该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。* 如:@Transactional(rollbackFor = {NullPointerException.class,RuntimeException.class})* 表示空指针异常和运行时异常时回滚事务* @return*/Class<? extends Throwable>[] rollbackFor() default {};/*** 该属性用于设置需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,则进行事务回滚。* 与上面的区别就是,直接写异常名字,不需要写.class* 如:@Transactional(rollbackForClassName = {"NullPointerException","Exception"})* @return*/String[] rollbackForClassName() default {};/*** 该属性用于设置不需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,不进行事务回滚。* 如:@Transactional(noRollbackFor = {NullPointerException.class})* 表示当抛出空指针异常时,不回滚事务* @return*/Class<? extends Throwable>[] noRollbackFor() default {};/*** 该属性用于设置不需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,不进行事务回滚。* 如:@Transactional(noRollbackForClassName = {"NullPointerException","Exception"})* 很容易发现,与上面的两组是相对的,上面的是发生指定异常回滚,下面的是发生指定异常不回滚* @return*/String[] noRollbackForClassName() default {};
}

 

转载于:https://www.cnblogs.com/Zs-book1/p/11305598.html