gpt4 book ai didi

java - 如何以编程方式设置注释属性/属性?

转载 作者:搜寻专家 更新时间:2023-11-01 03:38:18 25 4
gpt4 key购买 nike

所以我需要为@Transactional 注解设置超时参数。此属性将来自属性文件,我无法执行此操作,因为我遇到“注释属性 Transactional.timeout 的值必须是常量表达式”。像这样

@Value("${mytimeout}")
private int myTimeout;

@Transactional(timeout=myTimeout)
public void myMethod(){
}

只有在变量为 final 时才能设置超时属性。

所以,我在考虑是否可以在使用@Transaction 注释时以编程方式设置超时属性。或者我可以设置此属性的任何其他方式谢谢!

最佳答案

  • 如果您需要所有事务的相同超时,您可以将其配置为defaultTimeout在你的事务管理器中

  • 否则,您可以尝试使用自定义 AnnotationTransactionAttributeSourceTransactionAnnotationParser ,尽管您需要替换 <tx:annotation-drivern>手动定义相应的 beans 以配置自定义属性源。

    然后您可以创建自定义注释并制作TransactionAnnotationParser生成 TransactionDefinition当它看到您的注释时使用自定义超时。

  • 否则,解决这个问题最简单的方法就是放弃使用@Transactional。并使用 TransactionTemplate相反。

关于java - 如何以编程方式设置注释属性/属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22804628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com