Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以编程方式设置注释属性/属性?_Java_Spring_Spring Annotations_Transactional - Fatal编程技术网

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

Java 如何以编程方式设置注释属性/属性?,java,spring,spring-annotations,transactional,Java,Spring,Spring Annotations,Transactional,所以我需要为@Transactional annotation设置超时参数。此属性将来自属性文件,由于遇到“注释属性Transactional.timeout的值必须是常量表达式”,因此我无法执行此操作。像这样的 @Value("${mytimeout}") private int myTimeout; @Transactional(timeout=myTimeout) public void myMethod(){ } 变量只能在变量为final时设置timeout属性 因此,我在想,在使

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

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

@Transactional(timeout=myTimeout)
public void myMethod(){
}
变量只能在变量为final时设置timeout属性

因此,我在想,在使用@Transaction注释时,是否可以通过编程方式设置timeout属性。或任何其他方式,我可以设置此属性,谢谢

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

  • 否则,您可以尝试使用自定义
    AnnotationTransactionAttributeSource
    TransactionAnnotationParser
    ,尽管您需要用相应bean的手动定义替换
    ,以便配置自定义属性源

    然后,您可以创建一个自定义注释,并使
    transactionnotationparser
    generate
    TransactionDefinition
    在看到您的注释时具有自定义超时

  • 否则,解决此问题的最简单方法是放弃使用
    @Transactional
    ,而是使用
    TransactionTemplate