此处将为大家介绍关于Spring@Transaction方法由同一类中的方法调用,不起作用吗?的详细内容,并且为您解答有关spring中transaction不生效的相关问题,此外,我们还将为您介绍关
此处将为大家介绍关于Spring @Transaction方法由同一类中的方法调用,不起作用吗?的详细内容,并且为您解答有关spring中transaction不生效的相关问题,此外,我们还将为您介绍关于@Transactional在方法级别不起作用、@Transactional方法调用没有@Transactional注释的另一个方法?、asp.net – 使用jQuery调用MVC中的action方法,参数不起作用、before_action :find_transaction 不起作用 rails api的有用信息。
本文目录一览:- Spring @Transaction方法由同一类中的方法调用,不起作用吗?(spring中transaction不生效)
- @Transactional在方法级别不起作用
- @Transactional方法调用没有@Transactional注释的另一个方法?
- asp.net – 使用jQuery调用MVC中的action方法,参数不起作用
- before_action :find_transaction 不起作用 rails api
Spring @Transaction方法由同一类中的方法调用,不起作用吗?(spring中transaction不生效)
我是Spring Transaction的新手。我发现有些事情很奇怪,也许我确实理解得很清楚。我想在方法级别周围进行事务处理,而我在同一个类中有一个调用者方法,似乎不喜欢它,必须从单独的类中调用它。我不知道怎么可能。如果有人知道如何解决此问题,我将不胜感激。我想使用相同的类来调用带注释的事务方法。
这是代码:
public class UserService { @Transactional public boolean addUser(String userName, String password) { try { // call DAO layer and adds to database. } catch (Throwable e) { TransactionAspectSupport.currentTransactionStatus() .setRollbackOnly(); } } public boolean addUsers(List<User> users) { for (User user : users) { addUser(user.getUserName, user.getPassword); } } }
答案1
小编典典这是Spring AOP(动态对象和cglib)的局限性。
如果你将Spring配置为使用AspectJ处理事务,那么你的代码将起作用。
最简单且可能最好的选择是重构代码。例如,一个处理用户的类和一个处理每个用户的类。然后,Spring AOP的默认事务处理将起作用。
使用AspectJ处理事务的配置技巧
为了使Spring能够将AspectJ用于事务,必须将模式设置为AspectJ:
<tx:annotation-driven mode="aspectj"/>
如果你使用的Spring版本低于3.0,则还必须将其添加到Spring配置中:
<beanfactory-method="aspectOf"> <property name="transactionManager" ref="transactionManager" /></bean>
@Transactional在方法级别不起作用
我对Spring 3.2.3 @Transactional注解有疑问。我的服务类如下所示:
@Service @Transactional
class InventoryDisclosureBO {
@Autowired InventoryDisclosureDAO inventoryDisclosureDAO;
private static final Logger log = LoggerFactory.getLogger( InventoryDisclosureBO.class);
public void processDisclosureData(InventoryDisclosureStatus data){
validate(data);
persist(data);
}
@Transactional(propagation = REQUIRES_NEW)
void persist(InventoryDisclosureStatus data) {
inventoryDisclosureDAO.setAllInvalid( data.getUnit());
inventoryDisclosureDAO.insert( data );
}
void validate(InventoryDisclosureStatus data) {
...
}
}
如果我调用persist()方法,所有方法都可以正常工作。但是,如果我在类级别将@Transactional注释掉-
事务将不会启动。谁能告诉我为什么Spring只能在methol级忽略@Transactional?
@Transactional方法调用没有@Transactional注释的另一个方法?
我在Service类中看到了一种被标记为的方法@Transactional
,但是它也在同一类中调用了其他未标为的方法@Transactional
。
这是否意味着对单独方法的调用导致应用程序打开与DB的单独连接或暂停父事务等?
不带任何注释的方法的默认行为是什么,而另一个带有@Transactional
注释的方法调用该方法的默认行为是什么?
asp.net – 使用jQuery调用MVC中的action方法,参数不起作用
function selectWeek() { $('#selectWeekButton').click(function (event) { var number = $("#selectWeekId").val(); var year = $("#selectYearId").val(); var actionUrl = '<%: Url.Action("Edit",new { number="WEEKPLACEHOLDER",year="YEARPLACEHOLDER" }) %>' var yearUrl = actionUrl.replace('YEARPLACEHOLDER',year); var url = yearUrl.replace('WEEKPLACEHOLDER',number); alert(url); $.get(url,function (data) { alert('Test'); }); }); }
正如您所看到的,我用警报检查了网址,并且它似乎包含两个值都很好.但是当我在action方法中检查year参数的值时,它为null.
以下是输入字段:
<span>Vecka: </span> <input type="text" id="selectWeekId" /> <span>År: </span> <input type="text" id="selectYearId" /> <input type="button" value="Välj vecka" id="selectWeekButton" />
并且动作方法的开头:
public ActionResult Edit(string number,string year) //etc...
我知道这看起来很奇怪,而不仅仅是绑定字段,但原因是这些输入字段及其值不是此View的主要目的.他们只是在这个时间表应用程序中选择另一周.此外,我最终将用jQuery日历替换输入字段,所以我仍然必须做这样的事情.
那么最简单的方法是什么,为什么它不能正常工作呢?
解决方法
http://blog.bobcravens.com/2009/11/ajax-calls-to-asp-net-mvc-action-methods-using-jquery/
before_action :find_transaction 不起作用 rails api
你应该这样做
before_action :find_transaction,only: [:show,:update,:destroy]
你拥有它的方式是创建一个字符串而不是一个数组
irb(main):001:0> %[show,update,destroy]
=> "show,destroy"
我尝试了你的方法,看看它是否有效,但它没有。如果您将其更改为我的建议,它确实如此。
关于Spring @Transaction方法由同一类中的方法调用,不起作用吗?和spring中transaction不生效的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于@Transactional在方法级别不起作用、@Transactional方法调用没有@Transactional注释的另一个方法?、asp.net – 使用jQuery调用MVC中的action方法,参数不起作用、before_action :find_transaction 不起作用 rails api的相关知识,请在本站寻找。
本文标签: