У меня есть класс сущностей, который будет использоваться в постоянстве данных весны.
@Persistent
public class Foo{
Bar bar;
}
Поскольку мы переключаемся между слоями персистентности Couchbase и Aerospike - этот класс будет использоваться в обоих из них в течение некоторого времени,Вот почему у меня есть эти классы в общем модуле Maven.Структура модуля выглядит следующим образом:
- постоянство-обычное
- постоянство-аэро
- постоянство-диван
Моя идея заключается в том, чтобы иметьSpring-data CouchbaseRepository и AerospikeRepository в соответствующих модулях, оба реализуют класс Repository из общего
public interface Repository {
save(Foo foo);
}
И у меня есть одна проблема.Мне нужно, чтобы у моего Foo.class была опция истечения срока действия, которая могла бы быть достигнута путем добавления либо аннотации @org.springframework.data.aerospike.mapping.Document(expiration = ...)
для аэроспайки, либо аннотации @org.springframework.data.couchbase.core.mapping.Document(expiryExpression = ...)
для couchbase.И я не хочу, чтобы эти аннотации были в общем модуле.Мне нужно, чтобы они добавлялись в класс Foo динамически, в зависимости от того, какие из модулей (couchbase или aerospike или оба) включены во время выполнения.
Можно ли как-то добиться такой гибкости?