Мне нужно использовать 3 разных менеджера транзакций в моем веб-приложении. Поэтому я написал свою собственную аннотацию в соответствии с Ссылка на Spring (раздел 10.5.6.3 Пользовательские аннотации ярлыков).
Одна аннотация (для использования одного конкретного менеджера транзакций) выглядит так:
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 = и так далее. Поскольку вы не можете «расширить» аннотацию (мне действительно просто нужно расширить аннотацию @Transactional из Spring), какова правильная реализация для этого?