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

Posted

tags:

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

参考技术A

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 提交或回滚事务。

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

【中文标题】如何从包内的两个不同文件夹中导入一个模块,该模块导入另一个模块【英文标题】:How to import a module, which imports another module, from two different folders inside a package 【发布时间】:2021-04-20 09:39:11 【问题描述】:

假设我有一个具有以下结构的 python 包:

folder1
   __init__.py
   main.py
   subfolder1
      __init__.py
      submain.py
      subagent.py (contains class Agent)
      subnetwork.py (contains class Network)

subagent.py 文件中,我导入 Network 类,在 main.pysubmain.py 中,我导入 Agent 类。我希望能够从main.pysubmain.py 启动我的程序。但是,这会导致subagent.py 文件出现问题。如果我从main.py 开始,我必须像这样在subagent.py 中编写导入:

from subfolder1.subnetwork import Network 

但是,如果我从 submain.py 开始,我必须像这样在 subagent.py 中编写导入:

from subnetwork import Network 

有没有优雅的解决方案来解决这个问题?

【问题讨论】:

【参考方案1】:

您可以使用 try except 块来导入两种方式

try:
    from subnetwork import Network
except ModuleNotFoundError:
    from subfolder1.subnetwork import Network 

【讨论】:

【参考方案2】:

改变工作目录?

import os

if __name__ == "__main__":  # Only change the working directory if the file is run directly
    os.chdir('..') # Move up a level so that it is the same as main
# now run the imports

【讨论】:

【参考方案3】:

使用绝对导入,即以folder1 开头:from folder1 import ...import folder1。像这样调用你的 mainspython -m folder1.mainpython -m folder1.subfolder1.submain

【讨论】:

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

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

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

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

@Transactional失效的问题

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

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