Webアプリで3つの異なるトランザクションマネージャーを使用する必要があります。そこで、 Springリファレンス(セクション10.5.6.3カスタムショートカットアノテーション)に従って独自のアノテーションを作成しました。
1つのアノテーション(1つの特定のtransactionmanagerを使用するため)は次のようになります。
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.transaction.annotation.Transactional;
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional("customer")
public @interface CustomerTX{
}
カスタマイズされた@CustomerTXアノテーションでサービスレイヤーにアノテーションを付けると、すべてが正常に機能します。ただし、readonly = true、rollbackFor =など、アノテーションにさらに多くのオプションを提供する必要があります。アノテーションを「拡張」することはできないので(私は本当にSpringから@Transactionalアノテーションを拡張する必要があります)、これの正しい実装は何ですか?