@Transactional有两个来源包,该导入哪一个?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Transactional有两个来源包,该导入哪一个?相关的知识,希望对你有一定的参考价值。

javax.transaction.Transactional

org.springframework.transaction.annotation.Transactional
都有@Transactional,实际项目中应该导哪个包呢?两个包有什么区别?

org.springframework.transaction.annotation.Transactional 这个是spring的。

@Transactional事务问题(org.springframework.transaction.annotation.Transactional)

@Transactional有两个不同的包。在Spring的事务管理中应该使用org.springframework.transaction.annotation.Transactional。

在Java EE 7 应用中,应该使用javax.transaction.Transactional。

扩展资料:

在应用系统调用声明@Transactional 的目标方法时,Spring Framework 默认使用 AOP 代理,在代码运行时生成一个代理对象,根据@Transactional 的属性配置信息。

这个代理对象决定该声明@Transactional 的目标方法是否由拦截器 TransactionInterceptor 来使用拦截,在 TransactionInterceptor 拦截时。

会在在目标方法开始执行之前创建并加入事务,并执行目标方法的逻辑, 最后根据执行情况是否出现异常,利用抽象事务管理器AbstractPlatformTransactionManager 操作数据源 DataSource 提交或回滚事务。

参考技术A 要用spring.jar里面的,因为这个注解是事务管理用的。
public class MultiTxService
@Transactional("tran_1")
public void addTest(int id)


@Transactional("tran_2")
public void deleteTest(int id)



本回答被提问者采纳

包导入

与包访问的相关规则

  1. 每个源代码文件只能有一个公有类,并且文件名必须与该公有类名称相同

  2. package语句必须在源代码的第一行,并且一个源文件只能有一句

  3. 导入语句位于package语句和类声明之前

  4. 导入的包应用于源代码文件的所有类

  5. 每个源代码只能有一个package语句

  6. 导入的包必须使用全称名称

  7. 导入语句不会引起性能损失,也不会增加代码长度

  8. 导入语句可以与全称类名共存

  相同名的类导入

  当有两个相同名字的类导入的时候,例如:

    import com.yuan.Fruit;

    import com.yuan.xing.Fruit;

 

  这样如果在new的时候Fruit f1 = new Fruit();这样使得编译器不知道这个Fruit是哪个Fruit。

  有两种解决方法。

    1. 使用一条import语句,导入那个更频繁使用的类。另一个使用时用全名称导入。

    2. 在整个代码中使用全称名称。

 

使用通配符

  当使用 “*”进行导入时候,则会把包中的所有类都导入到源文件中,使得源文件可以使用包中所有的类,例如import java.awt.*;这样就把awt中所有的类都导入到源文件中,使得源文件可以使用java.awt包中所有的类。

 

  当有两个相同的类,比如使用java.awt.List和java.util.List如果使用java.awt.*,和java.util.*;这样编译就会报错,使得编译器不知道要使用哪个List,所以这样必须使用全名称构造对象,java.awt.List  list1 = new java.awt.List();

 

格式化main()方法

  主方法方法名是固定的都是public static void main(String[] args){}(除了String后的变量名),没有正确的main()方法是一个运行时错误,而不是编译时错误。如果没有main()方法,语法正确编译将不会报错。

  当拥有任意多个命名为main()的方法(或者一个都没有),没有一个方法与JVM查找的main()方法相匹配,则将不能使用该类的名称调用java来运行该类。(但是仍然能实例化该类并调用其他方法,main方法只是用与启动虚拟机和引导程序)

  当具有合法的、非静态的main()方法的类只能通过编译、其他代码调用方法,但是如果遇到该类调用JVM时,这个非静态方法将会在运行时出现错误。

 

 

 

以上是关于@Transactional有两个来源包,该导入哪一个?的主要内容,如果未能解决你的问题,请参考以下文章

Spring事务管理,使用@Transactional注解

使用poi包读写excel需要导入哪几个jar包

spring3中需要的所有jar包从哪里弄

@Transactional失效的问题

Unity3D中如何将导入的资源包删除

如何从包内的两个不同文件夹中导入一个模块,该模块导入另一个模块