Java 如何以编程方式设置注释属性/属性?
所以我需要为@Transactional annotation设置超时参数。此属性将来自属性文件,由于遇到“注释属性Transactional.timeout的值必须是常量表达式”,因此我无法执行此操作。像这样的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属性 因此,我在想,在使
@Value("${mytimeout}")
private int myTimeout;
@Transactional(timeout=myTimeout)
public void myMethod(){
}
变量只能在变量为final时设置timeout属性
因此,我在想,在使用@Transaction注释时,是否可以通过编程方式设置timeout属性。或任何其他方式,我可以设置此属性,谢谢 - 如果所有事务都需要相同的超时,可以在事务管理器中将其配置为
defaultTimeout
- 否则,您可以尝试使用自定义
和AnnotationTransactionAttributeSource
,尽管您需要用相应bean的手动定义替换TransactionAnnotationParser
,以便配置自定义属性源 然后,您可以创建一个自定义注释,并使
generatetransactionnotationparser
在看到您的注释时具有自定义超时TransactionDefinition
- 否则,解决此问题的最简单方法是放弃使用
,而是使用@Transactional
TransactionTemplate