[英]How to set annotation property/attribute programmatically?
所以我需要為@Transactional注釋設置timeout參數。 這個屬性將來自一個屬性文件,我無法做到,因為我遇到“注釋屬性的值,Transactional.timeout必須是一個常量表達式”。 像這樣的東西
@Value("${mytimeout}")
private int myTimeout;
@Transactional(timeout=myTimeout)
public void myMethod(){
}
變量設置的唯一時間是變量是最終的。
所以,我在想是否可以在使用@Transaction批注時以編程方式設置超時屬性。 或者我可以設置此屬性的任何其他方式謝謝!
如果所有事務都需要相同的超時,則可以在事務管理器中將其配置為defaultTimeout
否則,您可以嘗試使用自定義AnnotationTransactionAttributeSource
和TransactionAnnotationParser
,但是您需要將<tx:annotation-drivern>
替換為相應bean的手動定義,以便配置自定義屬性源。
然后,您可以創建自定義注釋,並使TransactionAnnotationParser
在看到注釋時生成具有自定義超時的TransactionDefinition
。
否則,解決此問題的最簡單方法是放棄使用@Transactional
並改為使用TransactionTemplate
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.