企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
*`org.springframework.transaction.annotationl.Transactional`* ```java @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface Transactional { @AliasFor("transactionManager") String value() default ""; @AliasFor("value") String transactionManager() default ""; //事务传播行为:当事务方法被另一个事务方法调用时,指定事务应该如何传播。 //(1)REQUIRED:如果有事务在运行,当前的方法就在这个事务内运行,否则就启动一个新的事务,并在自己的事务内运行。 //(2)REQUIRED_NEW:当前方法必须启动事务,并在它自己的事务内运行,如果有事务正在运行,应该将他挂起。 //(3)SUPPORTS:如果有事务在运行,当前的方法就在这个事务内运行,否则他可以不运行在事务中。 //(4)NOT_SUPPORTE:当前的方法不应该运行在事务中,如果有运行的事务,将他挂起。 //(5)MANDATORY:当前的方法必须运行在事务内部,如果没有正在运行的事务,就抛出异常。 //(6)NEVER:当前方法不应该运行在事务中,如果有运行的事务,就抛出异常。 //(7)NESTED:如果有事务在运行,当前的方法就应该在这个事物的嵌套事务内运行, // 否则,就启动一个新的事务,并在它自己的事务内运行。 Propagation propagation() default Propagation.REQUIRED; //事务隔离级别。 //(1)READ_UNCOMMITTED:读未提交。允许事务A读取事务B未提交的修改。 //(2)READ_COMMITTED:读已提交。要求事务A只能读取事务B已提交的修改。 //(3)REPEATABLE_READ:可重复读。确保事务A可以多次从一个字段中读取到相同的值, // 即事务A执行期间禁止其它事务对这个字段进行更新。 //(4)SERIALIZABLE:串行化。确保事务A可以多次从一个表中读取到相同的行, // 在事务A执行期间,禁止其它事务对这个表进行添加、更新、删除操作。可以避免任何并发问题,但性能十分低下。 Isolation isolation() default Isolation.DEFAULT; //超时时间:事务需要在一定时间内进行提交,如果不提交进行回滚 //-1为永不超时,以秒单位进行计算。 int timeout() default -1; //是否只读,false为可以查询,可以添加修改删除操作 //读:查询操作 //写:添加修改删除操作 boolean readOnly() default false; //指定出现哪些异常进行事务回滚 Class<? extends Throwable>[] rollbackFor() default {}; String[] rollbackForClassName() default {}; //指定出现哪些异常不进行事务回滚 Class<? extends Throwable>[] noRollbackFor() default {}; String[] noRollbackForClassName() default {}; } ```