public abstract class AbstractFallbackTransactionAttributeSource extends ObjectSE implements TransactionAttributeSource, EmbeddedValueResolverAware
TransactionAttributeSource
の抽象的な実装: 1. 特定のターゲットメソッド。2. ターゲットクラス。3. メソッドの宣言 ; 4. クラス / インターフェースを宣言します。ターゲットメソッドに何も関連付けられていない場合は、デフォルトでターゲットクラスのトランザクション属性が使用されます。ターゲットメソッドに関連付けられたトランザクション属性は、クラストランザクション属性を完全にオーバーライドします。ターゲットクラスに何も見つからない場合、呼び出されたメソッドが呼び出されたインターフェース(JDK プロキシの場合)がチェックされます。
この実装は、属性が最初に使用された後、メソッドによって属性をキャッシュします。トランザクション属性を動的に変更できるようにすることが望ましい場合(これは非常にまれです)、キャッシングを構成可能にすることができます。ロールバックルールの評価にはコストがかかるため、キャッシングが望ましい。
コンストラクターと説明 |
---|
AbstractFallbackTransactionAttributeSource() |
修飾子と型 | メソッドと説明 |
---|---|
protected boolean | allowPublicMethodsOnly() public メソッドのみにトランザクションセマンティクスを許可する必要がありますか? |
protected TransactionAttribute | computeTransactionAttribute(MethodSE method, ClassSE<?> targetClass) getTransactionAttribute(java.lang.reflect.Method, java.lang.Class<?>) と同じ署名ですが、結果をキャッシュしません。 |
protected abstract TransactionAttribute | findTransactionAttribute(ClassSE<?> clazz) サブクラスは、特定のクラスのトランザクション属性があれば、それを返すためにこれを実装する必要があります。 |
protected abstract TransactionAttribute | findTransactionAttribute(MethodSE method) サブクラスは、指定されたメソッドのトランザクション属性があればそれを返すためにこれを実装する必要があります。 |
protected ObjectSE | getCacheKey(MethodSE method, ClassSE<?> targetClass) 指定されたメソッドとターゲットクラスのキャッシュキーを決定します。 |
TransactionAttribute | getTransactionAttribute(MethodSE method, ClassSE<?> targetClass) このメソッド呼び出しのトランザクション属性を決定します。 |
void | setEmbeddedValueResolver(StringValueResolver resolver) StringValueResolver を設定して、埋め込まれた定義値の解決に使用します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
isCandidateClass
protected final Log logger
この基本クラスは Serializable としてマークされていないため、具象サブクラスが Serializable である場合、直列化後にロガーが再作成されます。
public AbstractFallbackTransactionAttributeSource()
public void setEmbeddedValueResolver(StringValueResolver resolver)
EmbeddedValueResolverAware
EmbeddedValueResolverAware
の setEmbeddedValueResolver
@Nullable public TransactionAttribute getTransactionAttribute(MethodSE method, @Nullable ClassSE<?> targetClass)
メソッド属性が見つからない場合、デフォルトでクラスのトランザクション属性になります。
TransactionAttributeSource
の getTransactionAttribute
method
- 現在の呼び出しのメソッド (非 null
)targetClass
- この呼び出しのターゲットクラス (null
の場合があります)null
protected ObjectSE getCacheKey(MethodSE method, @Nullable ClassSE<?> targetClass)
オーバーロードされたメソッドに対して同じキーを生成してはなりません。同じメソッドの異なるインスタンスに対して同じキーを生成する必要があります。
method
- メソッド (非 null
)targetClass
- ターゲットクラス (null
の場合があります)null
)@Nullable protected TransactionAttribute computeTransactionAttribute(MethodSE method, @Nullable ClassSE<?> targetClass)
getTransactionAttribute(java.lang.reflect.Method, java.lang.Class<?>)
と同じ署名ですが、結果をキャッシュしません。getTransactionAttribute(java.lang.reflect.Method, java.lang.Class<?>)
は、このメソッドのキャッシュデコレータです。4.1.8 以降、このメソッドはオーバーライドできます。
@Nullable protected abstract TransactionAttribute findTransactionAttribute(ClassSE<?> clazz)
clazz
- 属性を取得するクラス null
@Nullable protected abstract TransactionAttribute findTransactionAttribute(MethodSE method)
method
- 属性を取得するメソッド null
protected boolean allowPublicMethodsOnly()
デフォルトの実装は false
を返します。